multiwoven-integrations 0.1.1 → 0.1.6

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.
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: []