workato-connector-sdk 1.3.9 → 1.3.11

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dc61d331c5e90aefecdbb3f336ae69937bb29b68f7bd7719d81bcdb5c3c86bd9
4
- data.tar.gz: b229cca847d63f6e209f84d10e82aa63fda5b87408f4af80c0c5608f2bc42654
3
+ metadata.gz: 956c62d7ff8d5f45ee006d40583f55839f13a725823c6c087b94689cce68dcb2
4
+ data.tar.gz: 267438cf0f54e21c622c90eb1f1ebf4430108ef1c0831a6b7102e3b82167b2d9
5
5
  SHA512:
6
- metadata.gz: 5c235fca45159067ee8a175893692d739b4ad484f25538a6791e2a4f09fec895e719b6cbfb2159be790427f29226cea9be018d460679cafff1aa81416d9f8e14
7
- data.tar.gz: 95d48a7b47e8dde25b95491594914a1f3a4e932c92edbaa94c98f6a80621b4c536b259465f46af21f5d634a1a18c021b9453e4b44b9f0ea0522a13db9a239ad7
6
+ metadata.gz: 3f34ed256d0b3a598e84974ed12ba317b83211664c58aace84e87441e824022b120397822a59769c5780eee03eff0167328f9392ceaaffc2847ed9769c5f8415
7
+ data.tar.gz: b2f22c5f643b3a641d9a17819e991eba37c8f09774e27e3a2ad130df005089d636b095373d64c336767bf26bce0b0fd747a352bdb603af0639dba71d4853fcba
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.3.9
1
+ 1.3.11
@@ -70,7 +70,7 @@ module Workato
70
70
  extended_input_schema,
71
71
  extended_output_schema,
72
72
  next_continue,
73
- &(block || action[:execute])
73
+ &block || action[:execute]
74
74
  )
75
75
  end
76
76
  rescue RequestFailedError => e
@@ -1,4 +1,5 @@
1
1
  # typed: false
2
2
  # frozen_string_literal: true
3
+
3
4
  #
4
5
  # This file is intentionally left blank. Do not remove
@@ -14,7 +14,7 @@ module Workato
14
14
  end
15
15
 
16
16
  refine BasicObject do
17
- def instance_exec(*args, &block)
17
+ ruby2_keywords def instance_exec(*args, &block)
18
18
  super(*args.take(block.parameters.length), &block)
19
19
  end
20
20
  end
@@ -268,7 +268,7 @@ module Workato
268
268
 
269
269
  sig { void }
270
270
  def define_action_methods
271
- methods.each do |method, _definition|
271
+ methods.each_key do |method|
272
272
  define_singleton_method(method) do |*args|
273
273
  @actions[method] ||= Action.new(
274
274
  action: {
@@ -32,7 +32,7 @@ module Workato
32
32
 
33
33
  sig { params(stream_name: String, input: SorbetTypes::StreamInputHash).returns(Stream::Proxy) }
34
34
  def out(stream_name, input = {})
35
- Stream::Proxy.new(input: input, name: stream_name, stream: streams[stream_name])
35
+ Stream::Proxy.new(input: Request.response!(input), name: stream_name, stream: streams[stream_name])
36
36
  end
37
37
 
38
38
  private
@@ -40,6 +40,12 @@ module Workato
40
40
  ALLOWED_KEY_SIZES = [128, 192, 256].freeze
41
41
  private_constant :ALLOWED_KEY_SIZES
42
42
 
43
+ ALLOWED_INITIALIZATION_VECTOR_SIZE = 96
44
+ private_constant :ALLOWED_INITIALIZATION_VECTOR_SIZE
45
+
46
+ ALLOWED_AUTH_TAG_SIZES = [96, 104, 112, 120, 128].freeze
47
+ private_constant :ALLOWED_AUTH_TAG_SIZES
48
+
43
49
  def initialize(streams:, connection:)
44
50
  @streams = streams
45
51
  @connection = connection
@@ -133,6 +139,9 @@ module Workato
133
139
  end
134
140
 
135
141
  def parse_json(source)
142
+ source = source.response! if source.is_a?(Request)
143
+ return source unless source.is_a?(String)
144
+
136
145
  JSON.parse(source)
137
146
  rescue JSON::ParserError => e
138
147
  raise JSONParsingError, e
@@ -163,6 +172,33 @@ module Workato
163
172
  Types::Binary.new(cipher.update(string) + cipher.final)
164
173
  end
165
174
 
175
+ def aes_gcm_encrypt(string, key, init_vector, auth_data = '')
176
+ unless string.is_a?(String) && key.is_a?(String) && init_vector.is_a?(String) && auth_data.is_a?(String)
177
+ raise Sdk::ArgumentError, 'All arguments must be of type String'
178
+ end
179
+
180
+ unless string.valid_encoding?
181
+ raise Sdk::ArgumentEncodingError, 'Data to be encrypted must have valid encoding'
182
+ end
183
+
184
+ raise Sdk::ArgumentError, 'Data to be encrypted must not be empty' if string.empty?
185
+
186
+ key_size = key.bytesize * 8
187
+ raise Sdk::ArgumentError, 'Incorrect key size for AES' unless ALLOWED_KEY_SIZES.include?(key_size)
188
+
189
+ init_vector_size = init_vector.bytesize * 8
190
+ unless init_vector_size == ALLOWED_INITIALIZATION_VECTOR_SIZE
191
+ raise Sdk::ArgumentError, 'Incorrect key size for Initialization Vector'
192
+ end
193
+
194
+ cipher = ::OpenSSL::Cipher.new("AES-#{key_size}-GCM")
195
+ cipher.encrypt
196
+ cipher.key = key
197
+ cipher.iv = init_vector
198
+ cipher.auth_data = auth_data
199
+ [cipher.update(string) + cipher.final, cipher.auth_tag].map { |v| Types::Binary.new(v) }
200
+ end
201
+
166
202
  def aes_cbc_decrypt(string, key, init_vector = nil)
167
203
  key_size = key.bytesize * 8
168
204
  unless ALLOWED_KEY_SIZES.include?(key_size)
@@ -178,6 +214,39 @@ module Workato
178
214
  raise Sdk::ArgumentError, e.message
179
215
  end
180
216
 
217
+ def aes_gcm_decrypt(encrypted, key, auth_tag, init_vector, auth_data = '')
218
+ unless encrypted.is_a?(String) &&
219
+ key.is_a?(String) &&
220
+ auth_tag.is_a?(String) &&
221
+ init_vector.is_a?(String) &&
222
+ auth_data.is_a?(String)
223
+ raise Sdk::ArgumentError, 'All arguments must be of type String'
224
+ end
225
+
226
+ unless encrypted.valid_encoding?
227
+ raise Sdk::ArgumentEncodingError, 'Data to be decrypted must have valid encoding'
228
+ end
229
+
230
+ raise Sdk::ArgumentError, 'Data to be decrypted must not be empty' if encrypted.blank?
231
+
232
+ auth_tag_size = auth_tag.bytesize * 8
233
+ unless ALLOWED_AUTH_TAG_SIZES.include?(auth_tag_size)
234
+ raise Sdk::ArgumentError, 'Incorrect authentication tag size'
235
+ end
236
+
237
+ key_size = key.bytesize * 8
238
+ raise Sdk::ArgumentError, 'Incorrect key size for AES' unless ALLOWED_KEY_SIZES.include?(key_size)
239
+
240
+ decipher = ::OpenSSL::Cipher.new("AES-#{key_size}-GCM").decrypt
241
+ decipher.key = key
242
+ decipher.iv = init_vector
243
+ decipher.auth_data = auth_data
244
+ decipher.auth_tag = auth_tag
245
+ Types::Binary.new(decipher.update(encrypted) + decipher.final)
246
+ rescue OpenSSL::Cipher::CipherError
247
+ raise Sdk::ArgumentError, 'Not able to decrypt, please check input values again'
248
+ end
249
+
181
250
  def pbkdf2_hmac_sha1(string, salt, iterations = 1000, key_len = 16)
182
251
  Types::Binary.new(::OpenSSL::PKCS5.pbkdf2_hmac_sha1(string, salt, iterations, key_len))
183
252
  end
@@ -12,6 +12,8 @@ module Workato
12
12
 
13
13
  ArgumentError = Class.new(Error)
14
14
 
15
+ ArgumentEncodingError = Class.new(ArgumentError)
16
+
15
17
  InvalidDefinitionError = Class.new(Error)
16
18
 
17
19
  InvalidURIError = Class.new(Error)
@@ -215,42 +215,21 @@ module Workato
215
215
  def schema_fields(object_definitions_hash, settings, config_fields, &schema_proc)
216
216
  return [] unless schema_proc
217
217
 
218
- execute(settings, config_fields) do |connection, input|
219
- T.unsafe(self).instance_exec(
220
- object_definitions_hash,
221
- connection,
222
- input,
223
- &schema_proc
224
- )
225
- end
218
+ Array.wrap(
219
+ execute(settings, config_fields) do |connection, input|
220
+ T.unsafe(self).instance_exec(
221
+ object_definitions_hash,
222
+ connection,
223
+ input,
224
+ &schema_proc
225
+ )
226
+ end
227
+ )
226
228
  end
227
229
 
228
230
  sig { params(request_or_result: T.untyped).returns(T.untyped) }
229
231
  def resolve_request(request_or_result)
230
- case request_or_result
231
- when Request
232
- resolve_request(request_or_result.response!)
233
- when ::Array
234
- request_or_result.each_with_index.inject(request_or_result) do |acc, (item, index)|
235
- response_item = resolve_request(item)
236
- if response_item.equal?(item)
237
- acc
238
- else
239
- (acc == request_or_result ? acc.dup : acc).tap { |a| a[index] = response_item }
240
- end
241
- end
242
- when ::Hash
243
- request_or_result.inject(request_or_result) do |acc, (key, value)|
244
- response_value = resolve_request(value)
245
- if response_value.equal?(value)
246
- acc
247
- else
248
- (acc == request_or_result ? acc.dup : acc).tap { |h| h[key] = response_value }
249
- end
250
- end
251
- else
252
- request_or_result
253
- end
232
+ Request.response!(request_or_result)
254
233
  end
255
234
 
256
235
  sig { params(value: T.untyped).returns(T.untyped) }
@@ -155,8 +155,8 @@ module Workato
155
155
  self
156
156
  end
157
157
 
158
- def format_xml(root_element_name, namespaces = {}, strip_response_namespaces: false)
159
- request_format_xml(root_element_name, namespaces)
158
+ def format_xml(root_element_name, namespaces = {}, strip_response_namespaces: false, **kwargs)
159
+ request_format_xml(root_element_name, namespaces.merge(kwargs))
160
160
  .response_format_xml(strip_response_namespaces: strip_response_namespaces)
161
161
  end
162
162
 
@@ -257,6 +257,38 @@ module Workato
257
257
  response!.try(...)
258
258
  end
259
259
 
260
+ class << self
261
+ extend T::Sig
262
+
263
+ sig { params(request_or_result: T.untyped).returns(T.untyped) }
264
+ def response!(request_or_result)
265
+ case request_or_result
266
+ when Request
267
+ response!(request_or_result.response!)
268
+ when ::Array
269
+ request_or_result.each_with_index.inject(request_or_result) do |acc, (item, index)|
270
+ response_item = response!(item)
271
+ if response_item.equal?(item)
272
+ acc
273
+ else
274
+ (acc == request_or_result ? acc.dup : acc).tap { |a| a[index] = response_item }
275
+ end
276
+ end
277
+ when ::Hash
278
+ request_or_result.inject(request_or_result) do |acc, (key, value)|
279
+ response_value = response!(value)
280
+ if response_value.equal?(value)
281
+ acc
282
+ else
283
+ (acc == request_or_result ? acc.dup : acc).tap { |h| h[key] = response_value }
284
+ end
285
+ end
286
+ else
287
+ request_or_result
288
+ end
289
+ end
290
+ end
291
+
260
292
  private
261
293
 
262
294
  DEFAULT_RENDER_REQUEST = ->(_) {}
@@ -567,7 +599,7 @@ module Workato
567
599
  end
568
600
 
569
601
  def net_http_object(hostname, port)
570
- net = super(hostname, port)
602
+ net = super
571
603
  net.extra_chain_cert = ssl_extra_chain_cert if ssl_extra_chain_cert
572
604
  net
573
605
  end
@@ -44,7 +44,7 @@ module Workato
44
44
  end
45
45
 
46
46
  def self.xmlschema(str)
47
- from_time(super(str))
47
+ from_time(super)
48
48
  end
49
49
  end
50
50
  end
@@ -35,7 +35,7 @@ module Workato
35
35
 
36
36
  sig { params(streams_source: SorbetTypes::SourceHash).void }
37
37
  def define_action_methods(streams_source)
38
- streams_source.each do |stream, _stream_proc|
38
+ streams_source.each_key do |stream|
39
39
  define_singleton_method(stream) do |input = {}, from = 0, to = nil, frame_size = Stream::DEFAULT_FRAME_SIZE|
40
40
  to ||= from + frame_size
41
41
  self[stream].chunk(input, from, to, frame_size)
@@ -10,7 +10,7 @@ module Workato
10
10
  module Response
11
11
  def create(body, net_http_res, request, start_time)
12
12
  body = decode_content_encoding(net_http_res, body)
13
- super(body, net_http_res, request, start_time)
13
+ super
14
14
  end
15
15
 
16
16
  private
@@ -54,7 +54,7 @@ module Workato
54
54
  time = ::Time.strptime(self, format)
55
55
  form == :utc ? time.utc : time.getlocal
56
56
  else
57
- super form
57
+ super(form)
58
58
  end
59
59
  end
60
60
 
@@ -98,7 +98,9 @@ module Workato
98
98
  end
99
99
 
100
100
  def +(other)
101
- super(other&.to_s)
101
+ Kernel.raise Workato::Connector::Sdk::ArgumentError, 'Cannot concatenate string with nil' if other.nil?
102
+
103
+ super(other.to_s)
102
104
  end
103
105
 
104
106
  def to_hex
@@ -49,7 +49,7 @@ module Workato
49
49
  SUMMARY_LENGTH = 128
50
50
 
51
51
  def initialize(str)
52
- super(str)
52
+ super
53
53
  force_encoding(Encoding::ASCII_8BIT)
54
54
  end
55
55
 
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.3.9
4
+ version: 1.3.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Abolmasov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-11-09 00:00:00.000000000 Z
11
+ date: 2024-06-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -34,14 +34,20 @@ dependencies:
34
34
  name: aws-sigv4
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - '='
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.2'
40
+ - - ">="
38
41
  - !ruby/object:Gem::Version
39
42
  version: 1.2.4
40
43
  type: :runtime
41
44
  prerelease: false
42
45
  version_requirements: !ruby/object:Gem::Requirement
43
46
  requirements:
44
- - - '='
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '1.2'
50
+ - - ">="
45
51
  - !ruby/object:Gem::Version
46
52
  version: 1.2.4
47
53
  - !ruby/object:Gem::Dependency
@@ -90,14 +96,20 @@ dependencies:
90
96
  name: gyoku
91
97
  requirement: !ruby/object:Gem::Requirement
92
98
  requirements:
93
- - - '='
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: '1.3'
102
+ - - ">="
94
103
  - !ruby/object:Gem::Version
95
104
  version: 1.3.1
96
105
  type: :runtime
97
106
  prerelease: false
98
107
  version_requirements: !ruby/object:Gem::Requirement
99
108
  requirements:
100
- - - '='
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: '1.3'
112
+ - - ">="
101
113
  - !ruby/object:Gem::Version
102
114
  version: 1.3.1
103
115
  - !ruby/object:Gem::Dependency
@@ -158,16 +170,16 @@ dependencies:
158
170
  name: net-http-digest_auth
159
171
  requirement: !ruby/object:Gem::Requirement
160
172
  requirements:
161
- - - '='
173
+ - - "~>"
162
174
  - !ruby/object:Gem::Version
163
- version: 1.4.0
175
+ version: '1.4'
164
176
  type: :runtime
165
177
  prerelease: false
166
178
  version_requirements: !ruby/object:Gem::Requirement
167
179
  requirements:
168
- - - '='
180
+ - - "~>"
169
181
  - !ruby/object:Gem::Version
170
- version: 1.4.0
182
+ version: '1.4'
171
183
  - !ruby/object:Gem::Dependency
172
184
  name: nokogiri
173
185
  requirement: !ruby/object:Gem::Requirement
@@ -177,7 +189,7 @@ dependencies:
177
189
  version: 1.13.10
178
190
  - - "<"
179
191
  - !ruby/object:Gem::Version
180
- version: '1.15'
192
+ version: '1.16'
181
193
  type: :runtime
182
194
  prerelease: false
183
195
  version_requirements: !ruby/object:Gem::Requirement
@@ -187,7 +199,7 @@ dependencies:
187
199
  version: 1.13.10
188
200
  - - "<"
189
201
  - !ruby/object:Gem::Version
190
- version: '1.15'
202
+ version: '1.16'
191
203
  - !ruby/object:Gem::Dependency
192
204
  name: rack
193
205
  requirement: !ruby/object:Gem::Requirement