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 +4 -4
- data/VERSION +1 -1
- data/lib/workato/connector/sdk/action.rb +1 -1
- data/lib/workato/connector/sdk/blank.rb +1 -0
- data/lib/workato/connector/sdk/block_invocation_refinements.rb +1 -1
- data/lib/workato/connector/sdk/connector.rb +1 -1
- data/lib/workato/connector/sdk/dsl/stream_package.rb +1 -1
- data/lib/workato/connector/sdk/dsl/workato_package.rb +69 -0
- data/lib/workato/connector/sdk/errors.rb +2 -0
- data/lib/workato/connector/sdk/operation.rb +11 -32
- data/lib/workato/connector/sdk/request.rb +35 -3
- data/lib/workato/connector/sdk/schema/type/time.rb +1 -1
- data/lib/workato/connector/sdk/streams.rb +1 -1
- data/lib/workato/extension/content_encoding_decoder.rb +1 -1
- data/lib/workato/extension/string.rb +4 -2
- data/lib/workato/types/binary.rb +1 -1
- metadata +24 -12
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 956c62d7ff8d5f45ee006d40583f55839f13a725823c6c087b94689cce68dcb2
|
|
4
|
+
data.tar.gz: 267438cf0f54e21c622c90eb1f1ebf4430108ef1c0831a6b7102e3b82167b2d9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3f34ed256d0b3a598e84974ed12ba317b83211664c58aace84e87441e824022b120397822a59769c5780eee03eff0167328f9392ceaaffc2847ed9769c5f8415
|
|
7
|
+
data.tar.gz: b2f22c5f643b3a641d9a17819e991eba37c8f09774e27e3a2ad130df005089d636b095373d64c336767bf26bce0b0fd747a352bdb603af0639dba71d4853fcba
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.3.
|
|
1
|
+
1.3.11
|
|
@@ -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
|
|
@@ -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
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
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
|
-
|
|
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
|
|
602
|
+
net = super
|
|
571
603
|
net.extra_chain_cert = ssl_extra_chain_cert if ssl_extra_chain_cert
|
|
572
604
|
net
|
|
573
605
|
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.
|
|
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)
|
|
@@ -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
|
|
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
|
-
|
|
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
|
data/lib/workato/types/binary.rb
CHANGED
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.
|
|
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:
|
|
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
|
|
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
|
|
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.
|
|
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.
|
|
202
|
+
version: '1.16'
|
|
191
203
|
- !ruby/object:Gem::Dependency
|
|
192
204
|
name: rack
|
|
193
205
|
requirement: !ruby/object:Gem::Requirement
|