workato-connector-sdk 1.2.0 → 1.3.0
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/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
|