workato-connector-sdk 1.2.0 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/VERSION +1 -0
- data/lib/workato/cli/edit_command.rb +3 -1
- data/lib/workato/cli/exec_command.rb +76 -10
- data/lib/workato/cli/generate_command.rb +2 -2
- data/lib/workato/cli/main.rb +17 -10
- data/lib/workato/cli/oauth2_command.rb +4 -4
- data/lib/workato/cli/push_command.rb +2 -2
- data/lib/workato/cli/schema_command.rb +2 -2
- data/lib/workato/connector/sdk/account_properties.rb +2 -2
- data/lib/workato/connector/sdk/action.rb +20 -70
- data/lib/workato/connector/sdk/block_invocation_refinements.rb +2 -10
- data/lib/workato/connector/sdk/connection.rb +36 -19
- data/lib/workato/connector/sdk/connector.rb +65 -77
- data/lib/workato/connector/sdk/core.rb +62 -0
- data/lib/workato/connector/sdk/dsl/aws.rb +3 -3
- data/lib/workato/connector/sdk/dsl/call.rb +1 -1
- data/lib/workato/connector/sdk/dsl/csv_package.rb +133 -0
- data/lib/workato/connector/sdk/dsl/execution_context.rb +1 -0
- data/lib/workato/connector/sdk/dsl/http.rb +1 -1
- data/lib/workato/connector/sdk/dsl/reinvoke_after.rb +84 -0
- data/lib/workato/connector/sdk/dsl/stream_package.rb +65 -0
- data/lib/workato/connector/sdk/dsl/time.rb +0 -14
- data/lib/workato/connector/sdk/dsl/workato_package.rb +146 -0
- data/lib/workato/connector/sdk/dsl.rb +63 -10
- data/lib/workato/connector/sdk/errors.rb +28 -11
- data/lib/workato/connector/sdk/operation.rb +9 -2
- data/lib/workato/connector/sdk/request.rb +63 -25
- data/lib/workato/connector/sdk/schema/field/convertors.rb +2 -2
- data/lib/workato/connector/sdk/schema/type/unicode_string.rb +1 -1
- data/lib/workato/connector/sdk/schema.rb +7 -5
- data/lib/workato/connector/sdk/settings.rb +10 -1
- data/lib/workato/connector/sdk/stream.rb +243 -0
- data/lib/workato/connector/sdk/streams.rb +71 -0
- data/lib/workato/connector/sdk/summarize.rb +2 -2
- data/lib/workato/connector/sdk/trigger.rb +14 -7
- data/lib/workato/connector/sdk/version.rb +1 -1
- data/lib/workato/connector/sdk.rb +19 -46
- data/lib/workato/extension/array.rb +2 -0
- data/lib/workato/extension/case_sensitive_headers.rb +0 -1
- data/lib/workato/extension/content_encoding_decoder.rb +2 -0
- data/lib/workato/extension/currency/countries.rb +79 -0
- data/lib/workato/extension/currency/countries.yml +18433 -0
- data/lib/workato/extension/currency/currencies.rb +55 -0
- data/lib/workato/extension/currency/currencies.yml +479 -0
- data/lib/workato/extension/currency.rb +73 -5
- data/lib/workato/extension/enumerable.rb +2 -2
- data/lib/workato/extension/metadata_fix_wrap_kw_args.rb +11 -0
- data/lib/workato/extension/string.rb +14 -111
- data/lib/workato/testing/vcr_encrypted_cassette_serializer.rb +2 -0
- data/lib/workato/types/binary.rb +55 -0
- metadata +46 -61
- data/lib/workato/connector/sdk/dsl/csv.rb +0 -125
- data/lib/workato/connector/sdk/dsl/workato_code_lib.rb +0 -167
@@ -15,9 +15,6 @@ module Workato
|
|
15
15
|
r[k] = v
|
16
16
|
end
|
17
17
|
end
|
18
|
-
TO_COUNTRY_METHODS = %w[alpha2 alpha3 name number].freeze
|
19
|
-
TO_CURRENCY_METHODS = %w[code name symbol].freeze
|
20
|
-
TO_STATE_METHODS = %w[code name].freeze
|
21
18
|
|
22
19
|
def is_int? # rubocop:disable Naming/PredicateName
|
23
20
|
present? && (self !~ /\D/)
|
@@ -92,6 +89,10 @@ module Workato
|
|
92
89
|
end.join(' ')
|
93
90
|
end
|
94
91
|
|
92
|
+
def +(other)
|
93
|
+
super(other&.to_s)
|
94
|
+
end
|
95
|
+
|
95
96
|
def to_hex
|
96
97
|
unpack('H*')[0]
|
97
98
|
end
|
@@ -103,7 +104,7 @@ module Workato
|
|
103
104
|
alias encode_hex to_hex
|
104
105
|
|
105
106
|
def decode_hex
|
106
|
-
|
107
|
+
Types::Binary.new([self].pack('H*'))
|
107
108
|
end
|
108
109
|
|
109
110
|
def encode_base64
|
@@ -111,7 +112,7 @@ module Workato
|
|
111
112
|
end
|
112
113
|
|
113
114
|
def decode_base64
|
114
|
-
|
115
|
+
Types::Binary.new(Base64.decode64(self))
|
115
116
|
end
|
116
117
|
|
117
118
|
def encode_urlsafe_base64
|
@@ -127,27 +128,27 @@ module Workato
|
|
127
128
|
end
|
128
129
|
|
129
130
|
def decode_urlsafe_base64
|
130
|
-
|
131
|
+
Types::Binary.new(Base64.urlsafe_decode64(self))
|
131
132
|
end
|
132
133
|
|
133
134
|
def encode_sha256
|
134
|
-
|
135
|
+
Types::Binary.new(::Digest::SHA256.digest(self))
|
135
136
|
end
|
136
137
|
|
137
138
|
def hmac_sha256(key)
|
138
139
|
digest = ::OpenSSL::Digest.new('sha256')
|
139
|
-
|
140
|
+
Types::Binary.new(::OpenSSL::HMAC.digest(digest, key, self))
|
140
141
|
end
|
141
142
|
|
142
143
|
def hmac_sha512(key)
|
143
144
|
digest = ::OpenSSL::Digest.new('sha512')
|
144
|
-
|
145
|
+
Types::Binary.new(::OpenSSL::HMAC.digest(digest, key, self))
|
145
146
|
end
|
146
147
|
|
147
148
|
def rsa_sha256(key)
|
148
149
|
digest = ::OpenSSL::Digest.new('sha256')
|
149
150
|
private_key = ::OpenSSL::PKey::RSA.new(key)
|
150
|
-
|
151
|
+
Types::Binary.new(private_key.sign(digest, self))
|
151
152
|
end
|
152
153
|
|
153
154
|
def md5_hexdigest
|
@@ -155,120 +156,22 @@ module Workato
|
|
155
156
|
end
|
156
157
|
|
157
158
|
def sha1
|
158
|
-
|
159
|
+
Types::Binary.new(::Digest::SHA1.digest(self))
|
159
160
|
end
|
160
161
|
|
161
162
|
def hmac_sha1(key)
|
162
163
|
digest = ::OpenSSL::Digest.new('sha1')
|
163
|
-
|
164
|
+
Types::Binary.new(::OpenSSL::HMAC.digest(digest, key, self))
|
164
165
|
end
|
165
166
|
|
166
167
|
def hmac_md5(key)
|
167
168
|
digest = ::OpenSSL::Digest.new('md5')
|
168
|
-
|
169
|
+
Types::Binary.new(::OpenSSL::HMAC.digest(digest, key, self))
|
169
170
|
end
|
170
171
|
|
171
172
|
def from_xml
|
172
173
|
Workato::Utilities::Xml.parse_xml_to_hash(self)
|
173
174
|
end
|
174
|
-
|
175
|
-
TO_COUNTRY_METHODS.each do |suffix|
|
176
|
-
define_method("to_country_#{suffix}") do
|
177
|
-
to_country.try(suffix)
|
178
|
-
end
|
179
|
-
end
|
180
|
-
|
181
|
-
TO_CURRENCY_METHODS.each do |suffix|
|
182
|
-
define_method("to_currency_#{suffix}") do
|
183
|
-
to_currency_obj.try(suffix)
|
184
|
-
end
|
185
|
-
end
|
186
|
-
|
187
|
-
TO_STATE_METHODS.each do |suffix|
|
188
|
-
define_method("to_state_#{suffix}") do |country_name = 'US'|
|
189
|
-
to_state(country_name).try(:[], suffix)
|
190
|
-
end
|
191
|
-
end
|
192
|
-
|
193
|
-
protected
|
194
|
-
|
195
|
-
def to_country
|
196
|
-
TO_COUNTRY_METHODS.transform_find do |attr|
|
197
|
-
ISO3166::Country.send("find_country_by_#{attr}", self)
|
198
|
-
end
|
199
|
-
end
|
200
|
-
|
201
|
-
def to_currency_obj
|
202
|
-
ISO4217::Currency.from_code(self) || to_country.try(:currency)
|
203
|
-
end
|
204
|
-
|
205
|
-
def to_state(country_name = 'US')
|
206
|
-
country_name = country_name.presence || 'US'
|
207
|
-
country = country_name.to_country
|
208
|
-
return nil if country.blank?
|
209
|
-
|
210
|
-
state = upcase
|
211
|
-
country.states.transform_find do |code, data|
|
212
|
-
name = data['name'].upcase
|
213
|
-
other_names = Array(data['names']).map(&:upcase)
|
214
|
-
if code == state || name == state || other_names.include?(state)
|
215
|
-
{
|
216
|
-
code: code,
|
217
|
-
name: name
|
218
|
-
}.with_indifferent_access
|
219
|
-
end
|
220
|
-
end
|
221
|
-
end
|
222
|
-
end
|
223
|
-
|
224
|
-
class Binary < ::String
|
225
|
-
TITLE_LENGTH = 16
|
226
|
-
SUMMARY_LENGTH = 128
|
227
|
-
|
228
|
-
def initialize(str)
|
229
|
-
super(str)
|
230
|
-
force_encoding(Encoding::ASCII_8BIT)
|
231
|
-
end
|
232
|
-
|
233
|
-
def to_s
|
234
|
-
self
|
235
|
-
end
|
236
|
-
|
237
|
-
def to_json(_options = nil)
|
238
|
-
summary
|
239
|
-
end
|
240
|
-
|
241
|
-
def binary?
|
242
|
-
true
|
243
|
-
end
|
244
|
-
|
245
|
-
def base64
|
246
|
-
Base64.strict_encode64(self)
|
247
|
-
end
|
248
|
-
|
249
|
-
def as_string(encoding)
|
250
|
-
::String.new(self, encoding: encoding).encode(encoding, invalid: :replace, undef: :replace)
|
251
|
-
end
|
252
|
-
|
253
|
-
def as_utf8
|
254
|
-
as_string('utf-8')
|
255
|
-
end
|
256
|
-
|
257
|
-
def sha1
|
258
|
-
Binary.new(::Digest::SHA1.digest(self))
|
259
|
-
end
|
260
|
-
|
261
|
-
private
|
262
|
-
|
263
|
-
def summary
|
264
|
-
if length.positive?
|
265
|
-
left = "0x#{byteslice(0, SUMMARY_LENGTH).unpack1('H*')}"
|
266
|
-
right = bytesize > SUMMARY_LENGTH ? "…(#{bytesize - SUMMARY_LENGTH} bytes more)" : ''
|
267
|
-
"#{left}#{right}"
|
268
|
-
else
|
269
|
-
''
|
270
|
-
end
|
271
|
-
end
|
272
175
|
end
|
273
176
|
end
|
274
177
|
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Workato
|
4
|
+
module Types
|
5
|
+
class Binary < ::String
|
6
|
+
TITLE_LENGTH = 16
|
7
|
+
SUMMARY_LENGTH = 128
|
8
|
+
|
9
|
+
def initialize(str)
|
10
|
+
super(str)
|
11
|
+
force_encoding(Encoding::ASCII_8BIT)
|
12
|
+
end
|
13
|
+
|
14
|
+
def to_s
|
15
|
+
self
|
16
|
+
end
|
17
|
+
|
18
|
+
def to_json(_options = nil)
|
19
|
+
summary
|
20
|
+
end
|
21
|
+
|
22
|
+
def binary?
|
23
|
+
true
|
24
|
+
end
|
25
|
+
|
26
|
+
def base64
|
27
|
+
Base64.strict_encode64(self)
|
28
|
+
end
|
29
|
+
|
30
|
+
def as_string(encoding)
|
31
|
+
::String.new(self, encoding: encoding).encode(encoding, invalid: :replace, undef: :replace)
|
32
|
+
end
|
33
|
+
|
34
|
+
def as_utf8
|
35
|
+
as_string('utf-8')
|
36
|
+
end
|
37
|
+
|
38
|
+
def sha1
|
39
|
+
Binary.new(::Digest::SHA1.digest(self))
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def summary
|
45
|
+
if length.positive?
|
46
|
+
left = "0x#{byteslice(0, SUMMARY_LENGTH).unpack1('H*')}"
|
47
|
+
right = bytesize > SUMMARY_LENGTH ? "…(#{bytesize - SUMMARY_LENGTH} bytes more)" : ''
|
48
|
+
"#{left}#{right}"
|
49
|
+
else
|
50
|
+
''
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
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.
|
4
|
+
version: 1.3.0
|
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: 2023-01-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -39,47 +39,33 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 1.2.4
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - '='
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: 0.7.7
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - '='
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: 0.7.7
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: countries
|
42
|
+
name: bundler
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
58
44
|
requirements:
|
59
|
-
- -
|
45
|
+
- - "~>"
|
60
46
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
47
|
+
version: '2.0'
|
62
48
|
type: :runtime
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
|
-
- -
|
52
|
+
- - "~>"
|
67
53
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
54
|
+
version: '2.0'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
56
|
+
name: charlock_holmes
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
72
58
|
requirements:
|
73
59
|
- - '='
|
74
60
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0.
|
61
|
+
version: 0.7.7
|
76
62
|
type: :runtime
|
77
63
|
prerelease: false
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
66
|
- - '='
|
81
67
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0.
|
68
|
+
version: 0.7.7
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: em-http-request
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -170,14 +156,14 @@ dependencies:
|
|
170
156
|
requirements:
|
171
157
|
- - '='
|
172
158
|
- !ruby/object:Gem::Version
|
173
|
-
version: 1.
|
159
|
+
version: 1.13.10
|
174
160
|
type: :runtime
|
175
161
|
prerelease: false
|
176
162
|
version_requirements: !ruby/object:Gem::Requirement
|
177
163
|
requirements:
|
178
164
|
- - '='
|
179
165
|
- !ruby/object:Gem::Version
|
180
|
-
version: 1.
|
166
|
+
version: 1.13.10
|
181
167
|
- !ruby/object:Gem::Dependency
|
182
168
|
name: oauth2
|
183
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -192,6 +178,20 @@ dependencies:
|
|
192
178
|
- - "~>"
|
193
179
|
- !ruby/object:Gem::Version
|
194
180
|
version: '1.0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: psych
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - "~>"
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '3.0'
|
188
|
+
type: :runtime
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - "~>"
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '3.0'
|
195
195
|
- !ruby/object:Gem::Dependency
|
196
196
|
name: rack
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -318,34 +318,6 @@ dependencies:
|
|
318
318
|
- - "~>"
|
319
319
|
- !ruby/object:Gem::Version
|
320
320
|
version: '1.0'
|
321
|
-
- !ruby/object:Gem::Dependency
|
322
|
-
name: bundler
|
323
|
-
requirement: !ruby/object:Gem::Requirement
|
324
|
-
requirements:
|
325
|
-
- - "~>"
|
326
|
-
- !ruby/object:Gem::Version
|
327
|
-
version: '1.17'
|
328
|
-
type: :development
|
329
|
-
prerelease: false
|
330
|
-
version_requirements: !ruby/object:Gem::Requirement
|
331
|
-
requirements:
|
332
|
-
- - "~>"
|
333
|
-
- !ruby/object:Gem::Version
|
334
|
-
version: '1.17'
|
335
|
-
- !ruby/object:Gem::Dependency
|
336
|
-
name: rake
|
337
|
-
requirement: !ruby/object:Gem::Requirement
|
338
|
-
requirements:
|
339
|
-
- - "~>"
|
340
|
-
- !ruby/object:Gem::Version
|
341
|
-
version: '13.0'
|
342
|
-
type: :development
|
343
|
-
prerelease: false
|
344
|
-
version_requirements: !ruby/object:Gem::Requirement
|
345
|
-
requirements:
|
346
|
-
- - "~>"
|
347
|
-
- !ruby/object:Gem::Version
|
348
|
-
version: '13.0'
|
349
321
|
- !ruby/object:Gem::Dependency
|
350
322
|
name: rspec
|
351
323
|
requirement: !ruby/object:Gem::Requirement
|
@@ -380,14 +352,14 @@ dependencies:
|
|
380
352
|
requirements:
|
381
353
|
- - "~>"
|
382
354
|
- !ruby/object:Gem::Version
|
383
|
-
version: '0.
|
355
|
+
version: '0.6'
|
384
356
|
type: :development
|
385
357
|
prerelease: false
|
386
358
|
version_requirements: !ruby/object:Gem::Requirement
|
387
359
|
requirements:
|
388
360
|
- - "~>"
|
389
361
|
- !ruby/object:Gem::Version
|
390
|
-
version: '0.
|
362
|
+
version: '0.6'
|
391
363
|
- !ruby/object:Gem::Dependency
|
392
364
|
name: timecop
|
393
365
|
requirement: !ruby/object:Gem::Requirement
|
@@ -408,14 +380,14 @@ dependencies:
|
|
408
380
|
requirements:
|
409
381
|
- - "~>"
|
410
382
|
- !ruby/object:Gem::Version
|
411
|
-
version: '
|
383
|
+
version: '6.0'
|
412
384
|
type: :development
|
413
385
|
prerelease: false
|
414
386
|
version_requirements: !ruby/object:Gem::Requirement
|
415
387
|
requirements:
|
416
388
|
- - "~>"
|
417
389
|
- !ruby/object:Gem::Version
|
418
|
-
version: '
|
390
|
+
version: '6.0'
|
419
391
|
- !ruby/object:Gem::Dependency
|
420
392
|
name: webmock
|
421
393
|
requirement: !ruby/object:Gem::Requirement
|
@@ -440,6 +412,7 @@ extra_rdoc_files: []
|
|
440
412
|
files:
|
441
413
|
- LICENSE.md
|
442
414
|
- README.md
|
415
|
+
- VERSION
|
443
416
|
- exe/workato
|
444
417
|
- lib/workato-connector-sdk.rb
|
445
418
|
- lib/workato/cli/edit_command.rb
|
@@ -458,17 +431,20 @@ files:
|
|
458
431
|
- lib/workato/connector/sdk/block_invocation_refinements.rb
|
459
432
|
- lib/workato/connector/sdk/connection.rb
|
460
433
|
- lib/workato/connector/sdk/connector.rb
|
434
|
+
- lib/workato/connector/sdk/core.rb
|
461
435
|
- lib/workato/connector/sdk/dsl.rb
|
462
436
|
- lib/workato/connector/sdk/dsl/account_property.rb
|
463
437
|
- lib/workato/connector/sdk/dsl/aws.rb
|
464
438
|
- lib/workato/connector/sdk/dsl/call.rb
|
465
|
-
- lib/workato/connector/sdk/dsl/
|
439
|
+
- lib/workato/connector/sdk/dsl/csv_package.rb
|
466
440
|
- lib/workato/connector/sdk/dsl/error.rb
|
467
441
|
- lib/workato/connector/sdk/dsl/execution_context.rb
|
468
442
|
- lib/workato/connector/sdk/dsl/http.rb
|
469
443
|
- lib/workato/connector/sdk/dsl/lookup_table.rb
|
444
|
+
- lib/workato/connector/sdk/dsl/reinvoke_after.rb
|
445
|
+
- lib/workato/connector/sdk/dsl/stream_package.rb
|
470
446
|
- lib/workato/connector/sdk/dsl/time.rb
|
471
|
-
- lib/workato/connector/sdk/dsl/
|
447
|
+
- lib/workato/connector/sdk/dsl/workato_package.rb
|
472
448
|
- lib/workato/connector/sdk/dsl/workato_schema.rb
|
473
449
|
- lib/workato/connector/sdk/errors.rb
|
474
450
|
- lib/workato/connector/sdk/lookup_tables.rb
|
@@ -487,6 +463,8 @@ files:
|
|
487
463
|
- lib/workato/connector/sdk/schema/type/time.rb
|
488
464
|
- lib/workato/connector/sdk/schema/type/unicode_string.rb
|
489
465
|
- lib/workato/connector/sdk/settings.rb
|
466
|
+
- lib/workato/connector/sdk/stream.rb
|
467
|
+
- lib/workato/connector/sdk/streams.rb
|
490
468
|
- lib/workato/connector/sdk/summarize.rb
|
491
469
|
- lib/workato/connector/sdk/trigger.rb
|
492
470
|
- lib/workato/connector/sdk/version.rb
|
@@ -495,12 +473,17 @@ files:
|
|
495
473
|
- lib/workato/extension/case_sensitive_headers.rb
|
496
474
|
- lib/workato/extension/content_encoding_decoder.rb
|
497
475
|
- lib/workato/extension/currency.rb
|
476
|
+
- lib/workato/extension/currency/countries.rb
|
477
|
+
- lib/workato/extension/currency/countries.yml
|
478
|
+
- lib/workato/extension/currency/currencies.rb
|
479
|
+
- lib/workato/extension/currency/currencies.yml
|
498
480
|
- lib/workato/extension/date.rb
|
499
481
|
- lib/workato/extension/enumerable.rb
|
500
482
|
- lib/workato/extension/extra_chain_cert.rb
|
501
483
|
- lib/workato/extension/hash.rb
|
502
484
|
- lib/workato/extension/hash_with_indifferent_access.rb
|
503
485
|
- lib/workato/extension/integer.rb
|
486
|
+
- lib/workato/extension/metadata_fix_wrap_kw_args.rb
|
504
487
|
- lib/workato/extension/nil_class.rb
|
505
488
|
- lib/workato/extension/object.rb
|
506
489
|
- lib/workato/extension/phone.rb
|
@@ -509,6 +492,7 @@ files:
|
|
509
492
|
- lib/workato/extension/time.rb
|
510
493
|
- lib/workato/testing/vcr_encrypted_cassette_serializer.rb
|
511
494
|
- lib/workato/testing/vcr_multipart_body_matcher.rb
|
495
|
+
- lib/workato/types/binary.rb
|
512
496
|
- lib/workato/utilities/encoding.rb
|
513
497
|
- lib/workato/utilities/xml.rb
|
514
498
|
- lib/workato/web/app.rb
|
@@ -530,6 +514,7 @@ metadata:
|
|
530
514
|
documentation_uri: https://docs.workato.com/developing-connectors/sdk/cli.html
|
531
515
|
homepage_uri: https://www.workato.com/
|
532
516
|
source_code_uri: https://github.com/workato/workato-connector-sdk
|
517
|
+
rubygems_mfa_required: 'true'
|
533
518
|
post_install_message: |2+
|
534
519
|
|
535
520
|
If you updated from workato-connector-sdk prior 1.2.0 your tests could be broken.
|
@@ -544,7 +529,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
544
529
|
requirements:
|
545
530
|
- - ">="
|
546
531
|
- !ruby/object:Gem::Version
|
547
|
-
version:
|
532
|
+
version: 2.7.6
|
548
533
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
549
534
|
requirements:
|
550
535
|
- - ">="
|
@@ -1,125 +0,0 @@
|
|
1
|
-
# typed: strict
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
require 'csv'
|
5
|
-
|
6
|
-
module Workato
|
7
|
-
module Connector
|
8
|
-
module Sdk
|
9
|
-
CsvError = Class.new(Sdk::RuntimeError)
|
10
|
-
|
11
|
-
CsvFormatError = Class.new(CsvError)
|
12
|
-
|
13
|
-
class CsvFileTooBigError < CsvError
|
14
|
-
extend T::Sig
|
15
|
-
|
16
|
-
sig { returns(Integer) }
|
17
|
-
attr_reader :size
|
18
|
-
|
19
|
-
sig { returns(Integer) }
|
20
|
-
attr_reader :max
|
21
|
-
|
22
|
-
sig { params(size: Integer, max: Integer).void }
|
23
|
-
def initialize(size, max)
|
24
|
-
super("CSV file is too big. Max allowed: #{max.to_s(:human_size)}, got: #{size.to_s(:human_size)}")
|
25
|
-
@size = T.let(size, Integer)
|
26
|
-
@max = T.let(max, Integer)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
class CsvFileTooManyLinesError < CsvError
|
31
|
-
extend T::Sig
|
32
|
-
|
33
|
-
sig { returns(Integer) }
|
34
|
-
attr_reader :max
|
35
|
-
|
36
|
-
sig { params(max: Integer).void }
|
37
|
-
def initialize(max)
|
38
|
-
super("CSV file has too many lines. Max allowed: #{max}")
|
39
|
-
@max = T.let(max, Integer)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
module Dsl
|
44
|
-
module Csv
|
45
|
-
extend T::Sig
|
46
|
-
|
47
|
-
MAX_FILE_SIZE_FOR_PARSE = T.let(30.megabytes, Integer)
|
48
|
-
private_constant :MAX_FILE_SIZE_FOR_PARSE
|
49
|
-
|
50
|
-
MAX_LINES_FOR_PARSE = 65_000
|
51
|
-
private_constant :MAX_LINES_FOR_PARSE
|
52
|
-
|
53
|
-
class << self
|
54
|
-
extend T::Sig
|
55
|
-
|
56
|
-
sig do
|
57
|
-
params(
|
58
|
-
str: String,
|
59
|
-
headers: T.any(T::Boolean, T::Array[String], String),
|
60
|
-
col_sep: T.nilable(String),
|
61
|
-
row_sep: T.nilable(String),
|
62
|
-
quote_char: T.nilable(String),
|
63
|
-
skip_blanks: T.nilable(T::Boolean),
|
64
|
-
skip_first_line: T::Boolean
|
65
|
-
).returns(
|
66
|
-
T::Array[T::Hash[String, T.untyped]]
|
67
|
-
)
|
68
|
-
end
|
69
|
-
def parse(str, headers:, col_sep: nil, row_sep: nil, quote_char: nil, skip_blanks: nil,
|
70
|
-
skip_first_line: false)
|
71
|
-
if str.bytesize > MAX_FILE_SIZE_FOR_PARSE
|
72
|
-
raise CsvFileTooBigError.new(str.bytesize, MAX_FILE_SIZE_FOR_PARSE)
|
73
|
-
end
|
74
|
-
|
75
|
-
index = 0
|
76
|
-
options = { col_sep: col_sep, row_sep: row_sep, quote_char: quote_char, headers: headers,
|
77
|
-
skip_blanks: skip_blanks }.compact
|
78
|
-
Enumerator.new do |consumer|
|
79
|
-
CSV.parse(str, options) do |row|
|
80
|
-
if index.zero? && skip_first_line
|
81
|
-
index += 1
|
82
|
-
next
|
83
|
-
end
|
84
|
-
if index == MAX_LINES_FOR_PARSE
|
85
|
-
raise CsvFileTooManyLinesError, MAX_LINES_FOR_PARSE
|
86
|
-
end
|
87
|
-
|
88
|
-
index += 1
|
89
|
-
consumer.yield(T.cast(row, CSV::Row).to_hash)
|
90
|
-
end
|
91
|
-
end.to_a
|
92
|
-
rescue CSV::MalformedCSVError => e
|
93
|
-
raise CsvFormatError, e
|
94
|
-
rescue ArgumentError => e
|
95
|
-
raise Sdk::RuntimeError, e.message
|
96
|
-
end
|
97
|
-
|
98
|
-
sig do
|
99
|
-
params(
|
100
|
-
str: T.nilable(String),
|
101
|
-
headers: T.nilable(T::Array[String]),
|
102
|
-
col_sep: T.nilable(String),
|
103
|
-
row_sep: T.nilable(String),
|
104
|
-
quote_char: T.nilable(String),
|
105
|
-
force_quotes: T.nilable(T::Boolean),
|
106
|
-
blk: T.proc.params(csv: CSV).void
|
107
|
-
).returns(
|
108
|
-
String
|
109
|
-
)
|
110
|
-
end
|
111
|
-
def generate(str = nil, headers: nil, col_sep: nil, row_sep: nil, quote_char: nil, force_quotes: nil, &blk)
|
112
|
-
options = { col_sep: col_sep, row_sep: row_sep, quote_char: quote_char, headers: headers,
|
113
|
-
force_quotes: force_quotes }.compact
|
114
|
-
options[:write_headers] = options[:headers].present?
|
115
|
-
|
116
|
-
::CSV.generate(str || String.new, options, &blk)
|
117
|
-
rescue ArgumentError => e
|
118
|
-
raise Sdk::RuntimeError, e.message
|
119
|
-
end
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|
125
|
-
end
|