workato-connector-sdk 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +5 -5
  2. data/lib/workato/cli/edit_command.rb +4 -3
  3. data/lib/workato/cli/exec_command.rb +24 -35
  4. data/lib/workato/cli/generate_command.rb +1 -0
  5. data/lib/workato/cli/generators/connector_generator.rb +1 -0
  6. data/lib/workato/cli/generators/master_key_generator.rb +1 -0
  7. data/lib/workato/cli/main.rb +1 -0
  8. data/lib/workato/cli/oauth2_command.rb +6 -5
  9. data/lib/workato/cli/push_command.rb +5 -4
  10. data/lib/workato/cli/schema_command.rb +4 -3
  11. data/lib/workato/connector/sdk/account_properties.rb +1 -0
  12. data/lib/workato/connector/sdk/action.rb +78 -20
  13. data/lib/workato/connector/sdk/block_invocation_refinements.rb +1 -0
  14. data/lib/workato/connector/sdk/connection.rb +202 -44
  15. data/lib/workato/connector/sdk/connector.rb +200 -65
  16. data/lib/workato/connector/sdk/dsl/account_property.rb +1 -0
  17. data/lib/workato/connector/sdk/dsl/aws.rb +23 -27
  18. data/lib/workato/connector/sdk/dsl/call.rb +1 -0
  19. data/lib/workato/connector/sdk/dsl/error.rb +1 -0
  20. data/lib/workato/connector/sdk/dsl/http.rb +2 -7
  21. data/lib/workato/connector/sdk/dsl/lookup_table.rb +1 -0
  22. data/lib/workato/connector/sdk/dsl/time.rb +6 -0
  23. data/lib/workato/connector/sdk/dsl/workato_code_lib.rb +38 -0
  24. data/lib/workato/connector/sdk/dsl/workato_schema.rb +1 -0
  25. data/lib/workato/connector/sdk/dsl.rb +19 -4
  26. data/lib/workato/connector/sdk/errors.rb +4 -3
  27. data/lib/workato/connector/sdk/lookup_tables.rb +1 -0
  28. data/lib/workato/connector/sdk/object_definitions.rb +7 -8
  29. data/lib/workato/connector/sdk/operation.rb +127 -88
  30. data/lib/workato/connector/sdk/request.rb +45 -17
  31. data/lib/workato/connector/sdk/schema/field/array.rb +1 -0
  32. data/lib/workato/connector/sdk/schema/field/convertors.rb +1 -0
  33. data/lib/workato/connector/sdk/schema/field/date.rb +1 -0
  34. data/lib/workato/connector/sdk/schema/field/date_time.rb +1 -0
  35. data/lib/workato/connector/sdk/schema/field/integer.rb +1 -0
  36. data/lib/workato/connector/sdk/schema/field/number.rb +1 -0
  37. data/lib/workato/connector/sdk/schema/field/object.rb +1 -0
  38. data/lib/workato/connector/sdk/schema/field/string.rb +1 -0
  39. data/lib/workato/connector/sdk/schema/type/time.rb +1 -0
  40. data/lib/workato/connector/sdk/schema/type/unicode_string.rb +1 -0
  41. data/lib/workato/connector/sdk/schema.rb +1 -0
  42. data/lib/workato/connector/sdk/settings.rb +9 -4
  43. data/lib/workato/connector/sdk/summarize.rb +3 -2
  44. data/lib/workato/connector/sdk/trigger.rb +81 -7
  45. data/lib/workato/connector/sdk/version.rb +2 -1
  46. data/lib/workato/connector/sdk/workato_schemas.rb +1 -0
  47. data/lib/workato/connector/sdk/xml.rb +1 -0
  48. data/lib/workato/connector/sdk.rb +4 -0
  49. data/lib/workato/extension/array.rb +1 -0
  50. data/lib/workato/extension/case_sensitive_headers.rb +1 -0
  51. data/lib/workato/extension/currency.rb +1 -0
  52. data/lib/workato/extension/date.rb +1 -0
  53. data/lib/workato/extension/enumerable.rb +1 -0
  54. data/lib/workato/extension/extra_chain_cert.rb +1 -0
  55. data/lib/workato/extension/hash.rb +1 -0
  56. data/lib/workato/extension/integer.rb +1 -0
  57. data/lib/workato/extension/nil_class.rb +1 -0
  58. data/lib/workato/extension/object.rb +1 -0
  59. data/lib/workato/extension/phone.rb +1 -0
  60. data/lib/workato/extension/string.rb +2 -1
  61. data/lib/workato/extension/symbol.rb +1 -0
  62. data/lib/workato/extension/time.rb +1 -0
  63. data/lib/workato/testing/vcr_encrypted_cassette_serializer.rb +5 -0
  64. data/lib/workato/testing/vcr_multipart_body_matcher.rb +1 -0
  65. data/lib/workato/web/app.rb +1 -0
  66. data/lib/workato-connector-sdk.rb +1 -0
  67. metadata +64 -7
@@ -1,3 +1,4 @@
1
+ # typed: strict
1
2
  # frozen_string_literal: true
2
3
 
3
4
  require 'securerandom'
@@ -5,19 +6,41 @@ require 'securerandom'
5
6
  module Workato
6
7
  module Connector
7
8
  module Sdk
9
+ module SorbetTypes
10
+ WebhookSubscribeOutputHash = T.type_alias { T::Hash[T.any(String, Symbol), T.untyped] }
11
+ end
12
+
8
13
  class Trigger < Operation
9
14
  using BlockInvocationRefinements
10
15
 
11
- def initialize(trigger:, connection: {}, methods: {}, settings: {}, object_definitions: nil)
16
+ sig do
17
+ params(
18
+ trigger: SorbetTypes::SourceHash,
19
+ methods: SorbetTypes::SourceHash,
20
+ connection: Connection,
21
+ object_definitions: T.nilable(ObjectDefinitions)
22
+ ).void
23
+ end
24
+ def initialize(trigger:, methods: {}, connection: Connection.new, object_definitions: nil)
12
25
  super(
13
26
  operation: trigger,
14
27
  connection: connection,
15
28
  methods: methods,
16
- settings: settings,
17
29
  object_definitions: object_definitions
18
30
  )
19
31
  end
20
32
 
33
+ sig do
34
+ params(
35
+ settings: T.nilable(SorbetTypes::SettingsHash),
36
+ input: SorbetTypes::OperationInputHash,
37
+ closure: T.untyped,
38
+ extended_input_schema: SorbetTypes::OperationSchema,
39
+ extended_output_schema: SorbetTypes::OperationSchema
40
+ ).returns(
41
+ HashWithIndifferentAccess
42
+ )
43
+ end
21
44
  def poll_page(settings = nil, input = {}, closure = nil, extended_input_schema = [],
22
45
  extended_output_schema = [])
23
46
  poll_proc = trigger[:poll]
@@ -34,8 +57,19 @@ module Workato
34
57
  output
35
58
  end
36
59
 
60
+ sig do
61
+ params(
62
+ settings: T.nilable(SorbetTypes::SettingsHash),
63
+ input: SorbetTypes::OperationInputHash,
64
+ closure: T.untyped,
65
+ extended_input_schema: SorbetTypes::OperationSchema,
66
+ extended_output_schema: SorbetTypes::OperationSchema
67
+ ).returns(
68
+ HashWithIndifferentAccess
69
+ )
70
+ end
37
71
  def poll(settings = nil, input = {}, closure = nil, extended_input_schema = [], extended_output_schema = [])
38
- events = []
72
+ events = T.let([], T::Array[T::Hash[T.any(String, Symbol), T.untyped]])
39
73
 
40
74
  loop do
41
75
  output = poll_page(settings, input, closure, extended_input_schema, extended_output_schema)
@@ -52,10 +86,25 @@ module Workato
52
86
  }.with_indifferent_access
53
87
  end
54
88
 
89
+ sig { params(input: SorbetTypes::OperationInputHash).returns(T.untyped) }
55
90
  def dedup(input = {})
56
91
  trigger[:dedup].call(input)
57
92
  end
58
93
 
94
+ sig do
95
+ params(
96
+ input: SorbetTypes::OperationInputHash,
97
+ payload: T::Hash[T.any(String, Symbol), T.untyped],
98
+ extended_input_schema: SorbetTypes::OperationSchema,
99
+ extended_output_schema: SorbetTypes::OperationSchema,
100
+ headers: T::Hash[T.any(String, Symbol), T.untyped],
101
+ params: T::Hash[T.any(String, Symbol), T.untyped],
102
+ settings: T.nilable(SorbetTypes::SettingsHash),
103
+ webhook_subscribe_output: SorbetTypes::WebhookSubscribeOutputHash
104
+ ).returns(
105
+ HashWithIndifferentAccess
106
+ )
107
+ end
59
108
  def webhook_notification(
60
109
  input = {},
61
110
  payload = {},
@@ -66,19 +115,31 @@ module Workato
66
115
  settings = nil,
67
116
  webhook_subscribe_output = {}
68
117
  )
118
+ connection.merge_settings!(settings) if settings
69
119
  Dsl::WithDsl.execute(
120
+ connection,
70
121
  input.with_indifferent_access,
71
122
  payload.with_indifferent_access,
72
- extended_input_schema.map(&:with_indifferent_access),
73
- extended_output_schema.map(&:with_indifferent_access),
123
+ Array.wrap(extended_input_schema).map(&:with_indifferent_access),
124
+ Array.wrap(extended_output_schema).map(&:with_indifferent_access),
74
125
  headers.with_indifferent_access,
75
126
  params.with_indifferent_access,
76
- (settings || @settings).with_indifferent_access,
127
+ connection.settings,
77
128
  webhook_subscribe_output.with_indifferent_access,
78
129
  &trigger[:webhook_notification]
79
- )
130
+ ).with_indifferent_access
80
131
  end
81
132
 
133
+ sig do
134
+ params(
135
+ webhook_url: String,
136
+ settings: T.nilable(SorbetTypes::SettingsHash),
137
+ input: SorbetTypes::OperationInputHash,
138
+ recipe_id: String
139
+ ).returns(
140
+ SorbetTypes::WebhookSubscribeOutputHash
141
+ )
142
+ end
82
143
  def webhook_subscribe(webhook_url = '', settings = nil, input = {}, recipe_id = SecureRandom.uuid)
83
144
  webhook_subscribe_proc = trigger[:webhook_subscribe]
84
145
  execute(settings, { input: input, webhook_url: webhook_url, recipe_id: recipe_id }) do |connection, payload|
@@ -92,6 +153,7 @@ module Workato
92
153
  end
93
154
  end
94
155
 
156
+ sig { params(webhook_subscribe_output: SorbetTypes::WebhookSubscribeOutputHash).returns(T.untyped) }
95
157
  def webhook_unsubscribe(webhook_subscribe_output = {})
96
158
  webhook_unsubscribe_proc = trigger[:webhook_unsubscribe]
97
159
  execute(nil, webhook_subscribe_output) do |_connection, input|
@@ -99,6 +161,17 @@ module Workato
99
161
  end
100
162
  end
101
163
 
164
+ sig do
165
+ params(
166
+ input: SorbetTypes::OperationInputHash,
167
+ payload: T::Hash[T.any(String, Symbol), T.untyped],
168
+ headers: T::Hash[T.any(String, Symbol), T.untyped],
169
+ params: T::Hash[T.any(String, Symbol), T.untyped],
170
+ webhook_subscribe_output: SorbetTypes::WebhookSubscribeOutputHash
171
+ ).returns(
172
+ T::Hash[T.any(String, Symbol), T.untyped]
173
+ )
174
+ end
102
175
  def invoke(input = {}, payload = {}, headers = {}, params = {}, webhook_subscribe_output = {})
103
176
  extended_schema = extended_schema(nil, input)
104
177
  config_schema = Schema.new(schema: config_fields_schema)
@@ -132,6 +205,7 @@ module Workato
132
205
 
133
206
  alias trigger operation
134
207
 
208
+ sig { returns(T::Boolean) }
135
209
  def webhook_notification?
136
210
  trigger[:webhook_notification].present?
137
211
  end
@@ -1,9 +1,10 @@
1
+ # typed: strict
1
2
  # frozen_string_literal: true
2
3
 
3
4
  module Workato
4
5
  module Connector
5
6
  module Sdk
6
- VERSION = '1.0.1'
7
+ VERSION = '1.0.2'
7
8
  end
8
9
  end
9
10
  end
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  # frozen_string_literal: true
2
3
 
3
4
  require 'json'
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  # frozen_string_literal: true
2
3
 
3
4
  require 'nokogiri'
@@ -1,5 +1,9 @@
1
+ # typed: strict
1
2
  # frozen_string_literal: true
2
3
 
4
+ require 'sorbet-runtime'
5
+ ::Method.prepend(T::CompatibilityPatches::MethodExtensions)
6
+
3
7
  module Workato
4
8
  module Connector
5
9
  module Sdk
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  module Workato
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  require 'rest-client'
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  module Workato
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  module Workato
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  module Enumerable
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  # frozen_string_literal: true
2
3
 
3
4
  require 'rest-client'
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  module Workato
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  # frozen_string_literal: true
2
3
 
3
4
  module Workato
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  # frozen_string_literal: true
2
3
 
3
4
  module Workato
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  module Workato
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  module Workato
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  module Workato
@@ -164,7 +165,7 @@ module Workato
164
165
  end
165
166
 
166
167
  def from_xml
167
- XML.parse_xml_to_hash self
168
+ Connector::Sdk::Xml.parse_xml_to_hash self
168
169
  end
169
170
 
170
171
  TO_COUNTRY_METHODS.each do |suffix|
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  module Workato
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  module Workato
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  # frozen_string_literal: true
2
3
 
3
4
  module Workato
@@ -24,6 +25,7 @@ module Workato
24
25
  File.binread(content_path)
25
26
  ensure
26
27
  File.unlink(content_path) if content_path.exist?
28
+ @content_path = ''
27
29
  end
28
30
 
29
31
  def deserialize(string)
@@ -32,6 +34,9 @@ module Workato
32
34
  end
33
35
  File.write(@content_path, string)
34
36
  ::YAML.safe_load(read).presence || {}
37
+ ensure
38
+ File.unlink(content_path) if content_path.exist?
39
+ @content_path = ''
35
40
  end
36
41
  end
37
42
  end
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  # frozen_string_literal: true
2
3
 
3
4
  module Workato
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  # frozen_string_literal: true
2
3
 
3
4
  module Workato
@@ -1,3 +1,4 @@
1
+ # typed: strict
1
2
  # frozen_string_literal: true
2
3
 
3
4
  require_relative 'workato/connector/sdk'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: workato-connector-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Abolmasov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-05-16 00:00:00.000000000 Z
11
+ date: 2022-08-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - '='
95
95
  - !ruby/object:Gem::Version
96
96
  version: 1.3.1
97
+ - !ruby/object:Gem::Dependency
98
+ name: i18n
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '='
102
+ - !ruby/object:Gem::Version
103
+ version: 0.9.5
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '='
109
+ - !ruby/object:Gem::Version
110
+ version: 0.9.5
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: jwt
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -128,14 +142,14 @@ dependencies:
128
142
  requirements:
129
143
  - - '='
130
144
  - !ruby/object:Gem::Version
131
- version: 2.14.0
145
+ version: 2.16.0
132
146
  type: :runtime
133
147
  prerelease: false
134
148
  version_requirements: !ruby/object:Gem::Requirement
135
149
  requirements:
136
150
  - - '='
137
151
  - !ruby/object:Gem::Version
138
- version: 2.14.0
152
+ version: 2.16.0
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: net-http-digest_auth
141
155
  requirement: !ruby/object:Gem::Requirement
@@ -220,20 +234,48 @@ dependencies:
220
234
  - - "~>"
221
235
  - !ruby/object:Gem::Version
222
236
  version: '1.0'
237
+ - !ruby/object:Gem::Dependency
238
+ name: ruby_rncryptor
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - "~>"
242
+ - !ruby/object:Gem::Version
243
+ version: '3.0'
244
+ type: :runtime
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - "~>"
249
+ - !ruby/object:Gem::Version
250
+ version: '3.0'
223
251
  - !ruby/object:Gem::Dependency
224
252
  name: rubyzip
225
253
  requirement: !ruby/object:Gem::Requirement
226
254
  requirements:
227
255
  - - "~>"
228
256
  - !ruby/object:Gem::Version
229
- version: '1.3'
257
+ version: '2.3'
258
+ type: :runtime
259
+ prerelease: false
260
+ version_requirements: !ruby/object:Gem::Requirement
261
+ requirements:
262
+ - - "~>"
263
+ - !ruby/object:Gem::Version
264
+ version: '2.3'
265
+ - !ruby/object:Gem::Dependency
266
+ name: sorbet-runtime
267
+ requirement: !ruby/object:Gem::Requirement
268
+ requirements:
269
+ - - "~>"
270
+ - !ruby/object:Gem::Version
271
+ version: '0.5'
230
272
  type: :runtime
231
273
  prerelease: false
232
274
  version_requirements: !ruby/object:Gem::Requirement
233
275
  requirements:
234
276
  - - "~>"
235
277
  - !ruby/object:Gem::Version
236
- version: '1.3'
278
+ version: '0.5'
237
279
  - !ruby/object:Gem::Dependency
238
280
  name: thor
239
281
  requirement: !ruby/object:Gem::Requirement
@@ -304,6 +346,20 @@ dependencies:
304
346
  - - "~>"
305
347
  - !ruby/object:Gem::Version
306
348
  version: '3.0'
349
+ - !ruby/object:Gem::Dependency
350
+ name: sorbet
351
+ requirement: !ruby/object:Gem::Requirement
352
+ requirements:
353
+ - - "~>"
354
+ - !ruby/object:Gem::Version
355
+ version: '0.5'
356
+ type: :development
357
+ prerelease: false
358
+ version_requirements: !ruby/object:Gem::Requirement
359
+ requirements:
360
+ - - "~>"
361
+ - !ruby/object:Gem::Version
362
+ version: '0.5'
307
363
  - !ruby/object:Gem::Dependency
308
364
  name: stub_server
309
365
  requirement: !ruby/object:Gem::Requirement
@@ -469,7 +525,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
469
525
  - !ruby/object:Gem::Version
470
526
  version: '0'
471
527
  requirements: []
472
- rubygems_version: 3.2.3
528
+ rubyforge_project:
529
+ rubygems_version: 2.6.14.4
473
530
  signing_key:
474
531
  specification_version: 4
475
532
  summary: Gem for running adapter's code outside Workato infrastructure