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 +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
|