neeto-data-sync 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/neeto_data_sync/version.rb +5 -0
- data/lib/neeto_data_sync/worker.rb +26 -0
- data/lib/neeto_data_sync.rb +56 -0
- metadata +117 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 6eab8ec4c365903ffcc512eb3df7340e72fb9ccb03633f92f2c03179ba6c2031
|
4
|
+
data.tar.gz: bb59f2180fa6d8dca627c20e1675320cb7df2645c844d55f7d51392d1cd8515d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 77ae8037b1c279326667c02cc2c2e63423dc7d27d2ede0f736f1bfc4d165a9f2a04ca634038131600f3ce95ad51bdde865270c7dd776c3c8e4eb1ef038fc7f33
|
7
|
+
data.tar.gz: 344f218e44d4225093d186af2c0732dd33bf147295a41567f1c3cfbc8b89e2195a76c6b713698f6b8d91c03bd03e62ccb58544cc50aedd01e1f48ed9dd6b8197
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NeetoDataSync
|
4
|
+
class DataSyncProcessor < SQSProcessor::Processor
|
5
|
+
def handle_message(payload)
|
6
|
+
unless NeetoDataSync.configured? && NeetoDataSync.validate_configuration
|
7
|
+
logger.warn("NeetoDataSync is not properly configured. Skipping message processing.")
|
8
|
+
return { status: 'skipped', reason: 'configuration_missing' }
|
9
|
+
end
|
10
|
+
|
11
|
+
if payload['user']
|
12
|
+
Sync::UserProcessor.new(payload).process
|
13
|
+
else
|
14
|
+
Sync::OrganizationProcessor.new(payload).process
|
15
|
+
end
|
16
|
+
|
17
|
+
true
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def logger
|
23
|
+
NeetoDataSync.configuration&.logger || Rails.logger
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "active_support"
|
4
|
+
require "sqs_processor"
|
5
|
+
require_relative "neeto_data_sync/version"
|
6
|
+
require_relative "neeto_data_sync/worker"
|
7
|
+
|
8
|
+
|
9
|
+
module NeetoDataSync
|
10
|
+
class Error < StandardError; end
|
11
|
+
class ConfigurationError < Error; end
|
12
|
+
|
13
|
+
def self.configure
|
14
|
+
yield(configuration)
|
15
|
+
validate_configuration
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.configuration
|
19
|
+
@configuration ||= begin
|
20
|
+
Configuration.new
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.configured?
|
25
|
+
!@configuration.nil?
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.validate_configuration
|
29
|
+
return unless configured?
|
30
|
+
|
31
|
+
missing_configs = []
|
32
|
+
missing_configs << "AWS region" if configuration.aws_region.nil?
|
33
|
+
missing_configs << "AWS access key ID" if configuration.aws_access_key_id.nil?
|
34
|
+
missing_configs << "AWS secret access key" if configuration.aws_secret_access_key.nil?
|
35
|
+
missing_configs << "Queue URL" if configuration.queue_url.nil?
|
36
|
+
|
37
|
+
if missing_configs.any?
|
38
|
+
warning_message = "NeetoDataSync: Missing required configuration: #{missing_configs.join(', ')}. The gem will be disabled."
|
39
|
+
if defined?(Rails) && Rails.logger
|
40
|
+
Rails.logger.warn(warning_message)
|
41
|
+
end
|
42
|
+
return false
|
43
|
+
end
|
44
|
+
|
45
|
+
true
|
46
|
+
end
|
47
|
+
|
48
|
+
class Configuration
|
49
|
+
attr_accessor :aws_region, :aws_access_key_id, :aws_secret_access_key,
|
50
|
+
:queue_url, :logger
|
51
|
+
|
52
|
+
def initialize
|
53
|
+
# Configuration will be set via the configure block in Rails initializer
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
metadata
ADDED
@@ -0,0 +1,117 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: neeto-data-sync
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.4
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Neeto
|
8
|
+
bindir: bin
|
9
|
+
cert_chain: []
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
11
|
+
dependencies:
|
12
|
+
- !ruby/object:Gem::Dependency
|
13
|
+
name: sqs_processor
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
15
|
+
requirements:
|
16
|
+
- - ">="
|
17
|
+
- !ruby/object:Gem::Version
|
18
|
+
version: '0'
|
19
|
+
type: :runtime
|
20
|
+
prerelease: false
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
requirements:
|
23
|
+
- - ">="
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: '0'
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: aws-sdk-sqs
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '1.0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '1.0'
|
40
|
+
- !ruby/object:Gem::Dependency
|
41
|
+
name: activesupport
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '6.0'
|
47
|
+
type: :runtime
|
48
|
+
prerelease: false
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '6.0'
|
54
|
+
- !ruby/object:Gem::Dependency
|
55
|
+
name: rspec
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '3.0'
|
61
|
+
type: :development
|
62
|
+
prerelease: false
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '3.0'
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
name: rubocop
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '1.0'
|
75
|
+
type: :development
|
76
|
+
prerelease: false
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '1.0'
|
82
|
+
description: A gem that provides data synchronization capabilities for Neeto products
|
83
|
+
using SQS
|
84
|
+
email:
|
85
|
+
- support@neeto.com
|
86
|
+
executables: []
|
87
|
+
extensions: []
|
88
|
+
extra_rdoc_files: []
|
89
|
+
files:
|
90
|
+
- lib/neeto_data_sync.rb
|
91
|
+
- lib/neeto_data_sync/version.rb
|
92
|
+
- lib/neeto_data_sync/worker.rb
|
93
|
+
homepage: https://github.com/bigbinary/neeto-data-sync
|
94
|
+
licenses:
|
95
|
+
- MIT
|
96
|
+
metadata:
|
97
|
+
homepage_uri: https://github.com/bigbinary/neeto-data-sync
|
98
|
+
source_code_uri: https://github.com/bigbinary/neeto-data-sync
|
99
|
+
changelog_uri: https://github.com/bigbinary/neeto-data-sync/blob/main/CHANGELOG.md
|
100
|
+
rdoc_options: []
|
101
|
+
require_paths:
|
102
|
+
- lib
|
103
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
105
|
+
- - ">="
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: 2.7.0
|
108
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '0'
|
113
|
+
requirements: []
|
114
|
+
rubygems_version: 3.6.9
|
115
|
+
specification_version: 4
|
116
|
+
summary: Data synchronization gem for Neeto products
|
117
|
+
test_files: []
|