multiwoven-integrations 0.1.1 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/.vscode/settings.json +5 -0
  3. data/lib/multiwoven/integrations/core/base_connector.rb +3 -3
  4. data/lib/multiwoven/integrations/core/constants.rb +2 -0
  5. data/lib/multiwoven/integrations/core/source_connector.rb +17 -0
  6. data/lib/multiwoven/integrations/core/utils.rb +8 -0
  7. data/lib/multiwoven/integrations/destination/facebook_custom_audience/client.rb +123 -0
  8. data/lib/multiwoven/integrations/destination/facebook_custom_audience/config/catalog.json +38 -0
  9. data/lib/multiwoven/integrations/destination/facebook_custom_audience/config/meta.json +15 -0
  10. data/lib/multiwoven/integrations/destination/facebook_custom_audience/config/spec.json +22 -0
  11. data/lib/multiwoven/integrations/destination/klaviyo/client.rb +11 -3
  12. data/lib/multiwoven/integrations/destination/klaviyo/config/catalog.json +86 -88
  13. data/lib/multiwoven/integrations/destination/klaviyo/config/meta.json +1 -1
  14. data/lib/multiwoven/integrations/destination/klaviyo/config/spec.json +2 -2
  15. data/lib/multiwoven/integrations/destination/salesforce_crm/client.rb +127 -0
  16. data/lib/multiwoven/integrations/destination/salesforce_crm/config/catalog.json +317 -0
  17. data/lib/multiwoven/integrations/destination/salesforce_crm/config/meta.json +15 -0
  18. data/lib/multiwoven/integrations/destination/salesforce_crm/config/spec.json +37 -0
  19. data/lib/multiwoven/integrations/destination/slack/client.rb +125 -0
  20. data/lib/multiwoven/integrations/destination/slack/config/catalog.json +71 -0
  21. data/lib/multiwoven/integrations/destination/slack/config/meta.json +14 -0
  22. data/lib/multiwoven/integrations/destination/slack/config/spec.json +22 -0
  23. data/lib/multiwoven/integrations/protocol/protocol.rb +2 -0
  24. data/lib/multiwoven/integrations/rollout.rb +4 -1
  25. data/lib/multiwoven/integrations/source/bigquery/client.rb +6 -0
  26. data/lib/multiwoven/integrations/source/bigquery/config/meta.json +1 -1
  27. data/lib/multiwoven/integrations/source/redshift/client.rb +5 -0
  28. data/lib/multiwoven/integrations/source/redshift/config/meta.json +1 -1
  29. data/lib/multiwoven/integrations/source/snowflake/client.rb +5 -0
  30. data/lib/multiwoven/integrations/source/snowflake/config/meta.json +1 -1
  31. data/lib/multiwoven/integrations.rb +6 -0
  32. data/multiwoven-integrations.gemspec +10 -6
  33. metadata +65 -8
@@ -7,6 +7,7 @@ module Multiwoven::Integrations::Source
7
7
  include Multiwoven::Integrations::Core
8
8
  class Client < SourceConnector
9
9
  def check_connection(connection_config)
10
+ connection_config = connection_config.with_indifferent_access
10
11
  create_connection(connection_config)
11
12
  ConnectionStatus.new(
12
13
  status: ConnectionStatusType["succeeded"]
@@ -18,6 +19,7 @@ module Multiwoven::Integrations::Source
18
19
  end
19
20
 
20
21
  def discover(connection_config)
22
+ connection_config = connection_config.with_indifferent_access
21
23
  query = "SELECT table_name, column_name, data_type, is_nullable
22
24
  FROM information_schema.columns
23
25
  WHERE table_schema = '#{connection_config[:schema]}' AND table_catalog = '#{connection_config[:database]}'
@@ -43,7 +45,10 @@ module Multiwoven::Integrations::Source
43
45
 
44
46
  def read(sync_config)
45
47
  connection_config = sync_config.source.connection_specification
48
+ connection_config = connection_config.with_indifferent_access
46
49
  query = sync_config.model.query
50
+ query = batched_query(query, sync_config.limit, sync_config.offset) unless sync_config.limit.nil? && sync_config.offset.nil?
51
+
47
52
  db = create_connection(connection_config)
48
53
  records = db.exec(query) do |result|
49
54
  result.map do |row|
@@ -3,7 +3,7 @@
3
3
  {
4
4
  "name": "Redshift",
5
5
  "connector_type": "source",
6
- "connector_subtype": "database",
6
+ "category": "Data Warehouse",
7
7
  "documentation_url": "https://docs.mutliwoven.com",
8
8
  "github_issue_label": "source-redshift",
9
9
  "icon": "redshift.svg",
@@ -5,6 +5,7 @@ module Multiwoven::Integrations::Source
5
5
  include Multiwoven::Integrations::Core
6
6
  class Client < SourceConnector
7
7
  def check_connection(connection_config)
8
+ connection_config = connection_config.with_indifferent_access
8
9
  create_connection(connection_config)
9
10
  ConnectionStatus.new(status: ConnectionStatusType["succeeded"]).to_multiwoven_message
10
11
  rescue Sequel::DatabaseConnectionError => e
@@ -12,6 +13,7 @@ module Multiwoven::Integrations::Source
12
13
  end
13
14
 
14
15
  def discover(connection_config)
16
+ connection_config = connection_config.with_indifferent_access
15
17
  query = "SELECT table_name, column_name, data_type, is_nullable
16
18
  FROM information_schema.columns
17
19
  WHERE table_schema = \'#{connection_config[:schema]}\' AND table_catalog = \'#{connection_config[:database]}\'
@@ -35,7 +37,10 @@ module Multiwoven::Integrations::Source
35
37
 
36
38
  def read(sync_config)
37
39
  connection_config = sync_config.source.connection_specification
40
+ connection_config = connection_config.with_indifferent_access
38
41
  query = sync_config.model.query
42
+ query = batched_query(query, sync_config.limit, sync_config.offset) unless sync_config.limit.nil? && sync_config.offset.nil?
43
+
39
44
  db = create_connection(connection_config)
40
45
 
41
46
  records = []
@@ -3,7 +3,7 @@
3
3
  {
4
4
  "name": "Snowflake",
5
5
  "connector_type": "source",
6
- "connector_subtype": "database",
6
+ "category": "Data Warehouse",
7
7
  "documentation_url": "https://docs.mutliwoven.com",
8
8
  "github_issue_label": "source-snowflake",
9
9
  "icon": "snowflake.svg",
@@ -10,6 +10,9 @@ require "byebug"
10
10
  require "net/http"
11
11
  require "uri"
12
12
  require "active_support/core_ext/hash/indifferent_access"
13
+ require "restforce"
14
+ require "logger"
15
+ require "slack-ruby-client"
13
16
 
14
17
  # Service
15
18
  require_relative "integrations/config"
@@ -32,6 +35,9 @@ require_relative "integrations/source/bigquery/client"
32
35
 
33
36
  # Destination
34
37
  require_relative "integrations/destination/klaviyo/client"
38
+ require_relative "integrations/destination/salesforce_crm/client"
39
+ require_relative "integrations/destination/facebook_custom_audience/client"
40
+ require_relative "integrations/destination/slack/client"
35
41
 
36
42
  module Multiwoven
37
43
  module Integrations
@@ -8,17 +8,18 @@ Gem::Specification.new do |spec|
8
8
  spec.authors = ["Subin T P"]
9
9
  spec.email = ["subin@multiwoven.com"]
10
10
 
11
- spec.summary = "Open source data activation"
12
- spec.description = "Wrapper of connectors"
11
+ spec.summary = "Integration suite for open source reverse ETL platform"
12
+ spec.description = "Multiwoven Integrations is a comprehensive Ruby gem designed to facilitate seamless connectivity between various data sources and SaaS platforms."
13
+
13
14
  spec.homepage = "https://www.multiwoven.com/"
14
15
  spec.license = "MIT"
15
16
  spec.required_ruby_version = ">= 2.6.0"
16
17
 
17
18
  # spec.metadata["allowed_push_host"] = nil
18
-
19
+ spec.metadata["github_repo"] = "https://github.com/Multiwoven/multiwoven-integrations"
19
20
  spec.metadata["homepage_uri"] = spec.homepage
20
- spec.metadata["source_code_uri"] = "https://www.multiwoven.com/"
21
- spec.metadata["changelog_uri"] = "https://www.multiwoven.com/"
21
+ spec.metadata["source_code_uri"] = "https://github.com/Multiwoven/multiwoven-integrations"
22
+ spec.metadata["changelog_uri"] = "https://github.com/Multiwoven/multiwoven-integrations/blob/master/CHANGELOG.md"
22
23
 
23
24
  # Specify which files should be added to the gem when it is released.
24
25
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
@@ -33,14 +34,17 @@ Gem::Specification.new do |spec|
33
34
  spec.require_paths = ["lib"]
34
35
 
35
36
  spec.add_runtime_dependency "activesupport"
37
+ spec.add_runtime_dependency "async-websocket"
36
38
  spec.add_runtime_dependency "dry-schema"
37
39
  spec.add_runtime_dependency "dry-struct"
38
40
  spec.add_runtime_dependency "dry-types"
39
41
  spec.add_runtime_dependency "google-cloud-bigquery"
40
42
  spec.add_runtime_dependency "pg"
41
43
  spec.add_runtime_dependency "rake"
42
- spec.add_runtime_dependency "mw-ruby-odbc"
44
+ spec.add_runtime_dependency "restforce"
45
+ spec.add_runtime_dependency "ruby-odbc"
43
46
  spec.add_runtime_dependency "sequel"
47
+ spec.add_runtime_dependency "slack-ruby-client"
44
48
 
45
49
  spec.add_development_dependency "byebug"
46
50
  spec.add_development_dependency "rspec"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: multiwoven-integrations
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Subin T P
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-01-03 00:00:00.000000000 Z
11
+ date: 2024-01-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: async-websocket
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: dry-schema
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -109,7 +123,21 @@ dependencies:
109
123
  - !ruby/object:Gem::Version
110
124
  version: '0'
111
125
  - !ruby/object:Gem::Dependency
112
- name: mw-ruby-odbc
126
+ name: restforce
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: ruby-odbc
113
141
  requirement: !ruby/object:Gem::Requirement
114
142
  requirements:
115
143
  - - ">="
@@ -136,6 +164,20 @@ dependencies:
136
164
  - - ">="
137
165
  - !ruby/object:Gem::Version
138
166
  version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: slack-ruby-client
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
139
181
  - !ruby/object:Gem::Dependency
140
182
  name: byebug
141
183
  requirement: !ruby/object:Gem::Requirement
@@ -220,7 +262,8 @@ dependencies:
220
262
  - - ">="
221
263
  - !ruby/object:Gem::Version
222
264
  version: '0'
223
- description: Wrapper of connectors
265
+ description: Multiwoven Integrations is a comprehensive Ruby gem designed to facilitate
266
+ seamless connectivity between various data sources and SaaS platforms.
224
267
  email:
225
268
  - subin@multiwoven.com
226
269
  executables: []
@@ -230,6 +273,7 @@ files:
230
273
  - ".rspec"
231
274
  - ".rubocop.yml"
232
275
  - ".ruby-version"
276
+ - ".vscode/settings.json"
233
277
  - CHANGELOG.md
234
278
  - CODE_OF_CONDUCT.md
235
279
  - LICENSE.txt
@@ -243,10 +287,22 @@ files:
243
287
  - lib/multiwoven/integrations/core/http_client.rb
244
288
  - lib/multiwoven/integrations/core/source_connector.rb
245
289
  - lib/multiwoven/integrations/core/utils.rb
290
+ - lib/multiwoven/integrations/destination/facebook_custom_audience/client.rb
291
+ - lib/multiwoven/integrations/destination/facebook_custom_audience/config/catalog.json
292
+ - lib/multiwoven/integrations/destination/facebook_custom_audience/config/meta.json
293
+ - lib/multiwoven/integrations/destination/facebook_custom_audience/config/spec.json
246
294
  - lib/multiwoven/integrations/destination/klaviyo/client.rb
247
295
  - lib/multiwoven/integrations/destination/klaviyo/config/catalog.json
248
296
  - lib/multiwoven/integrations/destination/klaviyo/config/meta.json
249
297
  - lib/multiwoven/integrations/destination/klaviyo/config/spec.json
298
+ - lib/multiwoven/integrations/destination/salesforce_crm/client.rb
299
+ - lib/multiwoven/integrations/destination/salesforce_crm/config/catalog.json
300
+ - lib/multiwoven/integrations/destination/salesforce_crm/config/meta.json
301
+ - lib/multiwoven/integrations/destination/salesforce_crm/config/spec.json
302
+ - lib/multiwoven/integrations/destination/slack/client.rb
303
+ - lib/multiwoven/integrations/destination/slack/config/catalog.json
304
+ - lib/multiwoven/integrations/destination/slack/config/meta.json
305
+ - lib/multiwoven/integrations/destination/slack/config/spec.json
250
306
  - lib/multiwoven/integrations/protocol/protocol.json
251
307
  - lib/multiwoven/integrations/protocol/protocol.rb
252
308
  - lib/multiwoven/integrations/rollout.rb
@@ -266,9 +322,10 @@ homepage: https://www.multiwoven.com/
266
322
  licenses:
267
323
  - MIT
268
324
  metadata:
325
+ github_repo: https://github.com/Multiwoven/multiwoven-integrations
269
326
  homepage_uri: https://www.multiwoven.com/
270
- source_code_uri: https://www.multiwoven.com/
271
- changelog_uri: https://www.multiwoven.com/
327
+ source_code_uri: https://github.com/Multiwoven/multiwoven-integrations
328
+ changelog_uri: https://github.com/Multiwoven/multiwoven-integrations/blob/master/CHANGELOG.md
272
329
  post_install_message:
273
330
  rdoc_options: []
274
331
  require_paths:
@@ -284,8 +341,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
284
341
  - !ruby/object:Gem::Version
285
342
  version: '0'
286
343
  requirements: []
287
- rubygems_version: 3.4.22
344
+ rubygems_version: 3.5.3
288
345
  signing_key:
289
346
  specification_version: 4
290
- summary: Open source data activation
347
+ summary: Integration suite for open source reverse ETL platform
291
348
  test_files: []