workato-connector-sdk 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +17 -11
  3. data/lib/workato/cli/edit_command.rb +4 -3
  4. data/lib/workato/cli/exec_command.rb +27 -35
  5. data/lib/workato/cli/generate_command.rb +1 -0
  6. data/lib/workato/cli/generators/connector_generator.rb +1 -0
  7. data/lib/workato/cli/generators/master_key_generator.rb +1 -0
  8. data/lib/workato/cli/main.rb +44 -11
  9. data/lib/workato/cli/oauth2_command.rb +6 -5
  10. data/lib/workato/cli/push_command.rb +8 -5
  11. data/lib/workato/cli/schema_command.rb +6 -7
  12. data/lib/workato/connector/sdk/account_properties.rb +1 -0
  13. data/lib/workato/connector/sdk/action.rb +78 -20
  14. data/lib/workato/connector/sdk/block_invocation_refinements.rb +1 -0
  15. data/lib/workato/connector/sdk/connection.rb +204 -44
  16. data/lib/workato/connector/sdk/connector.rb +200 -65
  17. data/lib/workato/connector/sdk/dsl/account_property.rb +1 -0
  18. data/lib/workato/connector/sdk/dsl/aws.rb +23 -27
  19. data/lib/workato/connector/sdk/dsl/call.rb +6 -2
  20. data/lib/workato/connector/sdk/dsl/error.rb +1 -0
  21. data/lib/workato/connector/sdk/dsl/http.rb +2 -7
  22. data/lib/workato/connector/sdk/dsl/lookup_table.rb +1 -0
  23. data/lib/workato/connector/sdk/dsl/time.rb +6 -0
  24. data/lib/workato/connector/sdk/dsl/workato_code_lib.rb +38 -0
  25. data/lib/workato/connector/sdk/dsl/workato_schema.rb +1 -0
  26. data/lib/workato/connector/sdk/dsl.rb +19 -4
  27. data/lib/workato/connector/sdk/errors.rb +62 -4
  28. data/lib/workato/connector/sdk/lookup_tables.rb +1 -0
  29. data/lib/workato/connector/sdk/object_definitions.rb +22 -17
  30. data/lib/workato/connector/sdk/operation.rb +127 -88
  31. data/lib/workato/connector/sdk/request.rb +95 -31
  32. data/lib/workato/connector/sdk/schema/field/array.rb +1 -0
  33. data/lib/workato/connector/sdk/schema/field/convertors.rb +1 -0
  34. data/lib/workato/connector/sdk/schema/field/date.rb +1 -0
  35. data/lib/workato/connector/sdk/schema/field/date_time.rb +1 -0
  36. data/lib/workato/connector/sdk/schema/field/integer.rb +1 -0
  37. data/lib/workato/connector/sdk/schema/field/number.rb +1 -0
  38. data/lib/workato/connector/sdk/schema/field/object.rb +1 -0
  39. data/lib/workato/connector/sdk/schema/field/string.rb +1 -0
  40. data/lib/workato/connector/sdk/schema/type/time.rb +1 -0
  41. data/lib/workato/connector/sdk/schema/type/unicode_string.rb +1 -0
  42. data/lib/workato/connector/sdk/schema.rb +1 -0
  43. data/lib/workato/connector/sdk/settings.rb +9 -4
  44. data/lib/workato/connector/sdk/summarize.rb +3 -2
  45. data/lib/workato/connector/sdk/trigger.rb +106 -10
  46. data/lib/workato/connector/sdk/version.rb +2 -1
  47. data/lib/workato/connector/sdk/workato_schemas.rb +1 -0
  48. data/lib/workato/connector/sdk/xml.rb +1 -0
  49. data/lib/workato/connector/sdk.rb +8 -0
  50. data/lib/workato/extension/array.rb +1 -0
  51. data/lib/workato/extension/case_sensitive_headers.rb +1 -0
  52. data/lib/workato/extension/currency.rb +2 -1
  53. data/lib/workato/extension/date.rb +1 -0
  54. data/lib/workato/extension/enumerable.rb +1 -0
  55. data/lib/workato/extension/extra_chain_cert.rb +1 -0
  56. data/lib/workato/extension/hash.rb +1 -0
  57. data/lib/workato/extension/integer.rb +1 -0
  58. data/lib/workato/extension/nil_class.rb +1 -0
  59. data/lib/workato/extension/object.rb +1 -0
  60. data/lib/workato/extension/phone.rb +2 -1
  61. data/lib/workato/extension/string.rb +6 -2
  62. data/lib/workato/extension/symbol.rb +1 -0
  63. data/lib/workato/extension/time.rb +1 -0
  64. data/lib/workato/testing/vcr_encrypted_cassette_serializer.rb +5 -0
  65. data/lib/workato/testing/vcr_multipart_body_matcher.rb +1 -0
  66. data/lib/workato/utilities/encoding.rb +57 -0
  67. data/lib/workato/web/app.rb +1 -0
  68. data/lib/workato-connector-sdk.rb +1 -0
  69. metadata +88 -17
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  # frozen_string_literal: true
2
3
 
3
4
  require 'rest-client'
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  module Workato
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  # frozen_string_literal: true
2
3
 
3
4
  module Workato
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  # frozen_string_literal: true
2
3
 
3
4
  module Workato
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  module Workato
@@ -1,10 +1,11 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  module Workato
4
5
  module Extension
5
6
  module Phone
6
7
  def to_phone(options = {})
7
- ActiveSupport::NumberHelper::NumberToPhoneConverter(self, options).to_s
8
+ ActiveSupport::NumberHelper::NumberToPhoneConverter.convert(self, options).to_s
8
9
  end
9
10
  end
10
11
  end
@@ -1,5 +1,8 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
4
+ require 'rails-html-sanitizer'
5
+
3
6
  module Workato
4
7
  module Extension
5
8
  module String
@@ -35,7 +38,8 @@ module Workato
35
38
  end
36
39
 
37
40
  def strip_tags
38
- Loofah::Helpers.strip_tags(self)
41
+ @html_full_sanitizer ||= Rails::Html::Sanitizer.full_sanitizer.new
42
+ @html_full_sanitizer.sanitize(self)
39
43
  end
40
44
 
41
45
  def to_time(form = :local, format: nil)
@@ -164,7 +168,7 @@ module Workato
164
168
  end
165
169
 
166
170
  def from_xml
167
- XML.parse_xml_to_hash self
171
+ Connector::Sdk::Xml.parse_xml_to_hash self
168
172
  end
169
173
 
170
174
  TO_COUNTRY_METHODS.each do |suffix|
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  module Workato
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
3
 
3
4
  module Workato
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  # frozen_string_literal: true
2
3
 
3
4
  module Workato
@@ -24,6 +25,7 @@ module Workato
24
25
  File.binread(content_path)
25
26
  ensure
26
27
  File.unlink(content_path) if content_path.exist?
28
+ @content_path = ''
27
29
  end
28
30
 
29
31
  def deserialize(string)
@@ -32,6 +34,9 @@ module Workato
32
34
  end
33
35
  File.write(@content_path, string)
34
36
  ::YAML.safe_load(read).presence || {}
37
+ ensure
38
+ File.unlink(content_path) if content_path.exist?
39
+ @content_path = ''
35
40
  end
36
41
  end
37
42
  end
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  # frozen_string_literal: true
2
3
 
3
4
  module Workato
@@ -0,0 +1,57 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ require 'charlock_holmes'
5
+
6
+ module Workato
7
+ module Utilities
8
+ module Encoding
9
+ class << self
10
+ # this function finds first possible encoding that allows to perform correct encoding operations
11
+ # if no encoding is found it preserves initial and replaces bad symbols with ?
12
+ def force_best_encoding!(string)
13
+ original_encoding = string.encoding
14
+
15
+ possible_encodings(string).each do |encoding|
16
+ return string.force_encoding(::Encoding::ASCII_8BIT) if encoding.nil? # for binary
17
+ next unless string.force_encoding(encoding).valid_encoding?
18
+
19
+ begin
20
+ # try encode to utf
21
+ string.encode(::Encoding::UTF_8)
22
+ return string
23
+ rescue ::Encoding::UndefinedConversionError
24
+ next
25
+ end
26
+ end
27
+ if original_encoding == ::Encoding::BINARY
28
+ string.force_encoding(::Encoding::BINARY)
29
+ else
30
+ string
31
+ .encode!(::Encoding::UTF_8, invalid: :replace, undef: :replace, replace: '?')
32
+ .encode!(original_encoding, invalid: :replace, undef: :replace, replace: '?')
33
+ end
34
+ end
35
+
36
+ private
37
+
38
+ def possible_encodings(string)
39
+ encoding_candidates = CharlockHolmes::EncodingDetector.detect_all(string).sort! do |a, b|
40
+ confidence_a, encoding_a = a.values_at(:confidence, :ruby_encoding)
41
+ confidence_b, encoding_b = b.values_at(:confidence, :ruby_encoding)
42
+ # If equal and one binary, prefer non-binary.
43
+ if confidence_a == confidence_b
44
+ if encoding_a == 'binary'
45
+ confidence_b += 100
46
+ elsif encoding_b == 'binary'
47
+ confidence_a += 100
48
+ end
49
+ end
50
+ confidence_b <=> confidence_a
51
+ end
52
+ encoding_candidates.map { |candidate| candidate[:ruby_encoding] }
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  # frozen_string_literal: true
2
3
 
3
4
  module Workato
@@ -1,3 +1,4 @@
1
+ # typed: strict
1
2
  # frozen_string_literal: true
2
3
 
3
4
  require_relative 'workato/connector/sdk'
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.0.1
4
+ version: 1.1.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: 2022-05-16 00:00:00.000000000 Z
11
+ date: 2022-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
40
  version: 1.2.4
41
+ - !ruby/object:Gem::Dependency
42
+ name: charlock_holmes
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
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: countries
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -95,47 +109,47 @@ dependencies:
95
109
  - !ruby/object:Gem::Version
96
110
  version: 1.3.1
97
111
  - !ruby/object:Gem::Dependency
98
- name: jwt
112
+ name: i18n
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - '='
102
116
  - !ruby/object:Gem::Version
103
- version: 1.5.6
117
+ version: 0.9.5
104
118
  type: :runtime
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - '='
109
123
  - !ruby/object:Gem::Version
110
- version: 1.5.6
124
+ version: 0.9.5
111
125
  - !ruby/object:Gem::Dependency
112
- name: launchy
126
+ name: jwt
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
- - - "~>"
129
+ - - '='
116
130
  - !ruby/object:Gem::Version
117
- version: '2.0'
131
+ version: 1.5.6
118
132
  type: :runtime
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
- - - "~>"
136
+ - - '='
123
137
  - !ruby/object:Gem::Version
124
- version: '2.0'
138
+ version: 1.5.6
125
139
  - !ruby/object:Gem::Dependency
126
- name: loofah
140
+ name: launchy
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
- - - '='
143
+ - - "~>"
130
144
  - !ruby/object:Gem::Version
131
- version: 2.14.0
145
+ version: '2.0'
132
146
  type: :runtime
133
147
  prerelease: false
134
148
  version_requirements: !ruby/object:Gem::Requirement
135
149
  requirements:
136
- - - '='
150
+ - - "~>"
137
151
  - !ruby/object:Gem::Version
138
- version: 2.14.0
152
+ version: '2.0'
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: net-http-digest_auth
141
155
  requirement: !ruby/object:Gem::Requirement
@@ -192,6 +206,20 @@ dependencies:
192
206
  - - "~>"
193
207
  - !ruby/object:Gem::Version
194
208
  version: '2.0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: rails-html-sanitizer
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - '='
214
+ - !ruby/object:Gem::Version
215
+ version: 1.4.3
216
+ type: :runtime
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - '='
221
+ - !ruby/object:Gem::Version
222
+ version: 1.4.3
195
223
  - !ruby/object:Gem::Dependency
196
224
  name: rest-client
197
225
  requirement: !ruby/object:Gem::Requirement
@@ -220,20 +248,48 @@ dependencies:
220
248
  - - "~>"
221
249
  - !ruby/object:Gem::Version
222
250
  version: '1.0'
251
+ - !ruby/object:Gem::Dependency
252
+ name: ruby_rncryptor
253
+ requirement: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - "~>"
256
+ - !ruby/object:Gem::Version
257
+ version: '3.0'
258
+ type: :runtime
259
+ prerelease: false
260
+ version_requirements: !ruby/object:Gem::Requirement
261
+ requirements:
262
+ - - "~>"
263
+ - !ruby/object:Gem::Version
264
+ version: '3.0'
223
265
  - !ruby/object:Gem::Dependency
224
266
  name: rubyzip
225
267
  requirement: !ruby/object:Gem::Requirement
226
268
  requirements:
227
269
  - - "~>"
228
270
  - !ruby/object:Gem::Version
229
- version: '1.3'
271
+ version: '2.3'
272
+ type: :runtime
273
+ prerelease: false
274
+ version_requirements: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - "~>"
277
+ - !ruby/object:Gem::Version
278
+ version: '2.3'
279
+ - !ruby/object:Gem::Dependency
280
+ name: sorbet-runtime
281
+ requirement: !ruby/object:Gem::Requirement
282
+ requirements:
283
+ - - "~>"
284
+ - !ruby/object:Gem::Version
285
+ version: '0.5'
230
286
  type: :runtime
231
287
  prerelease: false
232
288
  version_requirements: !ruby/object:Gem::Requirement
233
289
  requirements:
234
290
  - - "~>"
235
291
  - !ruby/object:Gem::Version
236
- version: '1.3'
292
+ version: '0.5'
237
293
  - !ruby/object:Gem::Dependency
238
294
  name: thor
239
295
  requirement: !ruby/object:Gem::Requirement
@@ -304,6 +360,20 @@ dependencies:
304
360
  - - "~>"
305
361
  - !ruby/object:Gem::Version
306
362
  version: '3.0'
363
+ - !ruby/object:Gem::Dependency
364
+ name: sorbet
365
+ requirement: !ruby/object:Gem::Requirement
366
+ requirements:
367
+ - - "~>"
368
+ - !ruby/object:Gem::Version
369
+ version: '0.5'
370
+ type: :development
371
+ prerelease: false
372
+ version_requirements: !ruby/object:Gem::Requirement
373
+ requirements:
374
+ - - "~>"
375
+ - !ruby/object:Gem::Version
376
+ version: '0.5'
307
377
  - !ruby/object:Gem::Dependency
308
378
  name: stub_server
309
379
  requirement: !ruby/object:Gem::Requirement
@@ -435,6 +505,7 @@ files:
435
505
  - lib/workato/extension/time.rb
436
506
  - lib/workato/testing/vcr_encrypted_cassette_serializer.rb
437
507
  - lib/workato/testing/vcr_multipart_body_matcher.rb
508
+ - lib/workato/utilities/encoding.rb
438
509
  - lib/workato/web/app.rb
439
510
  - templates/.rspec.erb
440
511
  - templates/Gemfile.erb