workato-connector-sdk 1.3.9 → 1.3.11

Sign up to get free protection for your applications and to get access to all the features.
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