workato-connector-sdk 1.0.3 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +1 -0
  3. data/lib/workato/cli/exec_command.rb +31 -8
  4. data/lib/workato/cli/multi_auth_selected_fallback.rb +33 -0
  5. data/lib/workato/cli/oauth2_command.rb +50 -12
  6. data/lib/workato/connector/sdk/connection.rb +84 -14
  7. data/lib/workato/connector/sdk/connector.rb +6 -4
  8. data/lib/workato/connector/sdk/dsl/aws.rb +5 -2
  9. data/lib/workato/connector/sdk/dsl/call.rb +5 -2
  10. data/lib/workato/connector/sdk/dsl/csv.rb +125 -0
  11. data/lib/workato/connector/sdk/dsl/execution_context.rb +44 -0
  12. data/lib/workato/connector/sdk/dsl/workato_code_lib.rb +8 -1
  13. data/lib/workato/connector/sdk/dsl.rb +1 -0
  14. data/lib/workato/connector/sdk/errors.rb +69 -1
  15. data/lib/workato/connector/sdk/lookup_tables.rb +3 -1
  16. data/lib/workato/connector/sdk/object_definitions.rb +16 -10
  17. data/lib/workato/connector/sdk/operation.rb +24 -8
  18. data/lib/workato/connector/sdk/request.rb +136 -58
  19. data/lib/workato/connector/sdk/schema.rb +5 -3
  20. data/lib/workato/connector/sdk/settings.rb +4 -2
  21. data/lib/workato/connector/sdk/trigger.rb +42 -19
  22. data/lib/workato/connector/sdk/version.rb +1 -1
  23. data/lib/workato/connector/sdk.rb +3 -2
  24. data/lib/workato/extension/case_sensitive_headers.rb +0 -25
  25. data/lib/workato/extension/content_encoding_decoder.rb +67 -0
  26. data/lib/workato/extension/currency.rb +1 -1
  27. data/lib/workato/extension/extra_chain_cert.rb +0 -14
  28. data/lib/workato/extension/hash_with_indifferent_access.rb +19 -0
  29. data/lib/workato/extension/phone.rb +1 -1
  30. data/lib/workato/extension/string.rb +6 -2
  31. data/lib/workato/utilities/encoding.rb +57 -0
  32. data/lib/workato/{connector/sdk → utilities}/xml.rb +4 -4
  33. metadata +48 -22
@@ -3,6 +3,8 @@
3
3
 
4
4
  require 'active_support/encrypted_configuration'
5
5
 
6
+ using Workato::Extension::HashWithIndifferentAccess
7
+
6
8
  module Workato
7
9
  module Connector
8
10
  module Sdk
@@ -98,13 +100,13 @@ module Workato
98
100
  end
99
101
 
100
102
  def read_encrypted_file
101
- all_settings = encrypted_configuration.config.with_indifferent_access
103
+ all_settings = HashWithIndifferentAccess.wrap(encrypted_configuration.config)
102
104
 
103
105
  (name ? all_settings.fetch(name) : all_settings) || {}
104
106
  end
105
107
 
106
108
  def update_encrypted_file(new_settings)
107
- all_settings = encrypted_configuration.config.with_indifferent_access
109
+ all_settings = HashWithIndifferentAccess.wrap(encrypted_configuration.config)
108
110
 
109
111
  merge_settings(all_settings, new_settings)
110
112
 
@@ -3,11 +3,27 @@
3
3
 
4
4
  require 'securerandom'
5
5
 
6
+ using Workato::Extension::HashWithIndifferentAccess
7
+
6
8
  module Workato
7
9
  module Connector
8
10
  module Sdk
9
11
  module SorbetTypes
10
12
  WebhookSubscribeOutputHash = T.type_alias { T::Hash[T.any(String, Symbol), T.untyped] }
13
+
14
+ WebhookNotificationPayload = T.type_alias { T.untyped }
15
+
16
+ TriggerEventHash = T.type_alias { T::Hash[T.untyped, T.untyped] }
17
+
18
+ WebhookNotificationOutputHash = T.type_alias { T.any(T::Array[TriggerEventHash], TriggerEventHash) }
19
+
20
+ PollOutputHash = T.type_alias do
21
+ {
22
+ 'events' => T::Array[TriggerEventHash],
23
+ 'can_poll_more' => T.nilable(T::Boolean),
24
+ 'next_poll' => T.untyped
25
+ }
26
+ end
11
27
  end
12
28
 
13
29
  class Trigger < Operation
@@ -38,7 +54,7 @@ module Workato
38
54
  extended_input_schema: SorbetTypes::OperationSchema,
39
55
  extended_output_schema: SorbetTypes::OperationSchema
40
56
  ).returns(
41
- HashWithIndifferentAccess
57
+ SorbetTypes::PollOutputHash
42
58
  )
43
59
  end
44
60
  def poll_page(settings = nil, input = {}, closure = nil, extended_input_schema = [],
@@ -52,7 +68,9 @@ module Workato
52
68
  ) do |connection, payload, eis, eos|
53
69
  instance_exec(connection, payload[:input], payload[:closure], eis, eos, &poll_proc)
54
70
  end
55
- output[:events] = ::Array.wrap(output[:events]).reverse!.uniq(&trigger[:dedup])
71
+ output[:events] = Array.wrap(output[:events])
72
+ .reverse!
73
+ .map! { |event| ::Hash.try_convert(event) || event }
56
74
  output[:next_poll] = output[:next_poll].presence || closure
57
75
  output
58
76
  end
@@ -65,11 +83,11 @@ module Workato
65
83
  extended_input_schema: SorbetTypes::OperationSchema,
66
84
  extended_output_schema: SorbetTypes::OperationSchema
67
85
  ).returns(
68
- HashWithIndifferentAccess
86
+ SorbetTypes::PollOutputHash
69
87
  )
70
88
  end
71
89
  def poll(settings = nil, input = {}, closure = nil, extended_input_schema = [], extended_output_schema = [])
72
- events = T.let([], T::Array[T::Hash[T.any(String, Symbol), T.untyped]])
90
+ events = T.let([], T::Array[SorbetTypes::TriggerEventHash])
73
91
 
74
92
  loop do
75
93
  output = poll_page(settings, input, closure, extended_input_schema, extended_output_schema)
@@ -80,13 +98,13 @@ module Workato
80
98
  end
81
99
 
82
100
  {
83
- events: events.uniq(&trigger[:dedup]),
101
+ events: events,
84
102
  can_poll_more: false,
85
103
  next_poll: closure
86
104
  }.with_indifferent_access
87
105
  end
88
106
 
89
- sig { params(input: SorbetTypes::OperationInputHash).returns(T.untyped) }
107
+ sig { params(input: SorbetTypes::TriggerEventHash).returns(T.untyped) }
90
108
  def dedup(input = {})
91
109
  trigger[:dedup].call(input)
92
110
  end
@@ -94,7 +112,7 @@ module Workato
94
112
  sig do
95
113
  params(
96
114
  input: SorbetTypes::OperationInputHash,
97
- payload: T::Hash[T.any(String, Symbol), T.untyped],
115
+ payload: SorbetTypes::WebhookNotificationPayload,
98
116
  extended_input_schema: SorbetTypes::OperationSchema,
99
117
  extended_output_schema: SorbetTypes::OperationSchema,
100
118
  headers: T::Hash[T.any(String, Symbol), T.untyped],
@@ -102,7 +120,7 @@ module Workato
102
120
  settings: T.nilable(SorbetTypes::SettingsHash),
103
121
  webhook_subscribe_output: SorbetTypes::WebhookSubscribeOutputHash
104
122
  ).returns(
105
- HashWithIndifferentAccess
123
+ SorbetTypes::WebhookNotificationOutputHash
106
124
  )
107
125
  end
108
126
  def webhook_notification(
@@ -116,18 +134,23 @@ module Workato
116
134
  webhook_subscribe_output = {}
117
135
  )
118
136
  connection.merge_settings!(settings) if settings
119
- Dsl::WithDsl.execute(
137
+ output = Dsl::WithDsl.execute(
120
138
  connection,
121
- input.with_indifferent_access,
122
- payload.with_indifferent_access,
123
- Array.wrap(extended_input_schema).map(&:with_indifferent_access),
124
- Array.wrap(extended_output_schema).map(&:with_indifferent_access),
125
- headers.with_indifferent_access,
126
- params.with_indifferent_access,
139
+ HashWithIndifferentAccess.wrap(input),
140
+ payload,
141
+ Array.wrap(extended_input_schema).map { |i| HashWithIndifferentAccess.wrap(i) },
142
+ Array.wrap(extended_output_schema).map { |i| HashWithIndifferentAccess.wrap(i) },
143
+ HashWithIndifferentAccess.wrap(headers),
144
+ HashWithIndifferentAccess.wrap(params),
127
145
  connection.settings,
128
- webhook_subscribe_output.with_indifferent_access,
146
+ HashWithIndifferentAccess.wrap(webhook_subscribe_output),
129
147
  &trigger[:webhook_notification]
130
- ).with_indifferent_access
148
+ )
149
+ if output.is_a?(::Array)
150
+ output.map! { |event| ::Hash.try_convert(event) || event }
151
+ else
152
+ ::Hash.try_convert(output) || output
153
+ end
131
154
  end
132
155
 
133
156
  sig do
@@ -140,7 +163,7 @@ module Workato
140
163
  SorbetTypes::WebhookSubscribeOutputHash
141
164
  )
142
165
  end
143
- def webhook_subscribe(webhook_url = '', settings = nil, input = {}, recipe_id = SecureRandom.uuid)
166
+ def webhook_subscribe(webhook_url = '', settings = nil, input = {}, recipe_id = recipe_id!)
144
167
  webhook_subscribe_proc = trigger[:webhook_subscribe]
145
168
  execute(settings, { input: input, webhook_url: webhook_url, recipe_id: recipe_id }) do |connection, payload|
146
169
  instance_exec(
@@ -169,7 +192,7 @@ module Workato
169
192
  params: T::Hash[T.any(String, Symbol), T.untyped],
170
193
  webhook_subscribe_output: SorbetTypes::WebhookSubscribeOutputHash
171
194
  ).returns(
172
- T::Hash[T.any(String, Symbol), T.untyped]
195
+ T.any(SorbetTypes::WebhookNotificationOutputHash, SorbetTypes::PollOutputHash)
173
196
  )
174
197
  end
175
198
  def invoke(input = {}, payload = {}, headers = {}, params = {}, webhook_subscribe_output = {})
@@ -4,7 +4,7 @@
4
4
  module Workato
5
5
  module Connector
6
6
  module Sdk
7
- VERSION = '1.0.3'
7
+ VERSION = '1.2.0'
8
8
  end
9
9
  end
10
10
  end
@@ -39,11 +39,13 @@ require 'active_support/all'
39
39
  require 'active_support/json'
40
40
  require_relative '../extension/array'
41
41
  require_relative '../extension/case_sensitive_headers'
42
+ require_relative '../extension/content_encoding_decoder'
42
43
  require_relative '../extension/currency'
43
44
  require_relative '../extension/date'
44
45
  require_relative '../extension/enumerable'
45
46
  require_relative '../extension/extra_chain_cert'
46
47
  require_relative '../extension/hash'
48
+ require_relative '../extension/hash_with_indifferent_access'
47
49
  require_relative '../extension/integer'
48
50
  require_relative '../extension/nil_class'
49
51
  require_relative '../extension/object'
@@ -52,12 +54,12 @@ require_relative '../extension/string'
52
54
  require_relative '../extension/symbol'
53
55
  require_relative '../extension/time'
54
56
 
57
+ require_relative './sdk/errors'
55
58
  require_relative './sdk/account_properties'
56
59
  require_relative './sdk/action'
57
60
  require_relative './sdk/connection'
58
61
  require_relative './sdk/connector'
59
62
  require_relative './sdk/dsl'
60
- require_relative './sdk/errors'
61
63
  require_relative './sdk/lookup_tables'
62
64
  require_relative './sdk/object_definitions'
63
65
  require_relative './sdk/operation'
@@ -67,4 +69,3 @@ require_relative './sdk/summarize'
67
69
  require_relative './sdk/trigger'
68
70
  require_relative './sdk/version'
69
71
  require_relative './sdk/workato_schemas'
70
- require_relative './sdk/xml'
@@ -22,31 +22,6 @@ module Workato
22
22
 
23
23
  ::Net::HTTPHeader.prepend Net::HTTPHeader
24
24
  ::Net::HTTPGenericRequest.prepend Net::HTTPHeader
25
-
26
- module RestClient
27
- module Request
28
- attr_accessor :case_sensitive_headers
29
-
30
- def processed_headers
31
- return @processed_headers if case_sensitive_headers.blank?
32
- return case_sensitive_headers if @processed_headers.blank?
33
-
34
- @processed_headers.merge(case_sensitive_headers)
35
- end
36
-
37
- def execute(&block)
38
- # With 2.0.0+, net/http accepts URI objects in requests and handles wrapping
39
- # IPv6 addresses in [] for use in the Host request header.
40
- net_http_request = net_http_request_class(method).new(uri, processed_headers)
41
- net_http_request.case_sensitive_headers = case_sensitive_headers
42
- transmit(uri, net_http_request, payload, &block)
43
- ensure
44
- payload&.close
45
- end
46
- end
47
- end
48
-
49
- ::RestClient::Request.prepend RestClient::Request
50
25
  end
51
26
  end
52
27
  end
@@ -0,0 +1,67 @@
1
+ # typed: false
2
+ # frozen_string_literal: true
3
+
4
+ module Workato
5
+ module Extension
6
+ module ContentEncodingDecoder
7
+ module RestClient
8
+ module Response
9
+ def create(body, net_http_res, request, start_time)
10
+ body = decode_content_encoding(net_http_res, body)
11
+ super(body, net_http_res, request, start_time)
12
+ end
13
+
14
+ private
15
+
16
+ def decode_content_encoding(response, body)
17
+ content_encoding = response['content-encoding']
18
+
19
+ case content_encoding&.downcase
20
+ when 'deflate', 'gzip', 'x-gzip'
21
+ response.delete 'content-encoding'
22
+ return body if body.blank?
23
+
24
+ deflate_string(body).force_encoding(Encoding.default_external)
25
+ when 'none', 'identity'
26
+ response.delete 'content-encoding'
27
+ body
28
+ else
29
+ body
30
+ end
31
+ end
32
+
33
+ def deflate_string(body)
34
+ # Decodes all deflate, gzip or x-gzip
35
+ zstream = Zlib::Inflate.new(Zlib::MAX_WBITS + 32)
36
+
37
+ zstream.inflate(body) + zstream.finish
38
+ rescue Zlib::DataError
39
+ # No luck with Zlib decompression. Let's try with raw deflate,
40
+ # like some broken web servers do. This part isn't compatible with Net::HTTP content-decoding
41
+ zstream.close
42
+
43
+ zstream = Zlib::Inflate.new(-Zlib::MAX_WBITS)
44
+ zstream.inflate(body) + zstream.finish
45
+ ensure
46
+ zstream.close
47
+ end
48
+ end
49
+ end
50
+
51
+ ::RestClient::Response.singleton_class.prepend(RestClient::Response)
52
+
53
+ ::RestClient::Request.prepend(
54
+ Module.new do
55
+ def default_headers
56
+ # Should pass this header to be compatible with rest-client 2.0.2 version
57
+ # and rely on decode_content_encoding patch
58
+ # since net/http does not decompress response body if Content-Range is specified
59
+ # (see https://github.com/ruby/ruby/blob/27f6ad737b13062339df0a0c80449cf0dbc92ba5/lib/net/http/response.rb#L254)
60
+ # while the previous version of rest-client does.
61
+ super.tap { |headers| headers[:accept_encoding] = 'gzip;q=1.0,deflate;q=0.6,identity;q=0.3' }
62
+ end
63
+ end
64
+ )
65
+ end
66
+ end
67
+ end
@@ -5,7 +5,7 @@ module Workato
5
5
  module Extension
6
6
  module Currency
7
7
  def to_currency(options = {})
8
- ActiveSupport::NumberHelper::NumberToCurrencyConverter(self, options)
8
+ ActiveSupport::NumberHelper::NumberToCurrencyConverter.convert(self, options)
9
9
  end
10
10
  end
11
11
  end
@@ -22,20 +22,6 @@ module Workato
22
22
  end
23
23
 
24
24
  ::Net::HTTP.include Net::HTTP
25
-
26
- module RestClient
27
- module Request
28
- attr_accessor :extra_chain_cert
29
-
30
- def net_http_object(hostname, port)
31
- net = super(hostname, port)
32
- net.extra_chain_cert = extra_chain_cert if extra_chain_cert
33
- net
34
- end
35
- end
36
- end
37
-
38
- ::RestClient::Request.prepend RestClient::Request
39
25
  end
40
26
  end
41
27
  end
@@ -0,0 +1,19 @@
1
+ # typed: false
2
+ # frozen_string_literal: true
3
+
4
+ require 'active_support/hash_with_indifferent_access'
5
+
6
+ module Workato
7
+ module Extension
8
+ module HashWithIndifferentAccess
9
+ refine ::ActiveSupport::HashWithIndifferentAccess.singleton_class do
10
+ def wrap(value)
11
+ return ::ActiveSupport::HashWithIndifferentAccess.new unless value
12
+ return value if value.is_a?(ActiveSupport::HashWithIndifferentAccess)
13
+
14
+ value.with_indifferent_access
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -5,7 +5,7 @@ module Workato
5
5
  module Extension
6
6
  module Phone
7
7
  def to_phone(options = {})
8
- ActiveSupport::NumberHelper::NumberToPhoneConverter(self, options).to_s
8
+ ActiveSupport::NumberHelper::NumberToPhoneConverter.convert(self, options).to_s
9
9
  end
10
10
  end
11
11
  end
@@ -1,6 +1,9 @@
1
1
  # typed: false
2
2
  # frozen_string_literal: true
3
3
 
4
+ require 'rails-html-sanitizer'
5
+ require 'workato/utilities/xml'
6
+
4
7
  module Workato
5
8
  module Extension
6
9
  module String
@@ -36,7 +39,8 @@ module Workato
36
39
  end
37
40
 
38
41
  def strip_tags
39
- Loofah::Helpers.strip_tags(self)
42
+ @html_full_sanitizer ||= Rails::Html::Sanitizer.full_sanitizer.new
43
+ @html_full_sanitizer.sanitize(self)
40
44
  end
41
45
 
42
46
  def to_time(form = :local, format: nil)
@@ -165,7 +169,7 @@ module Workato
165
169
  end
166
170
 
167
171
  def from_xml
168
- Connector::Sdk::Xml.parse_xml_to_hash self
172
+ Workato::Utilities::Xml.parse_xml_to_hash(self)
169
173
  end
170
174
 
171
175
  TO_COUNTRY_METHODS.each do |suffix|
@@ -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
@@ -4,10 +4,10 @@
4
4
  require 'nokogiri'
5
5
 
6
6
  module Workato
7
- module Connector
8
- module Sdk
9
- module Xml
10
- def self.parse_xml_to_hash(payload, strip_namespaces: false)
7
+ module Utilities
8
+ module Xml
9
+ class << self
10
+ def parse_xml_to_hash(payload, strip_namespaces: false)
11
11
  parse_options = Nokogiri::XML::ParseOptions.new.nonet
12
12
  lazy_reader = Nokogiri::XML::Reader(payload, nil, nil, parse_options).to_enum.lazy
13
13
  lazy_reader.each_with_object([{}]) do |node, ancestors|
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.3
4
+ version: 1.2.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-10-11 00:00:00.000000000 Z
11
+ date: 2022-11-07 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
@@ -136,20 +150,6 @@ dependencies:
136
150
  - - "~>"
137
151
  - !ruby/object:Gem::Version
138
152
  version: '2.0'
139
- - !ruby/object:Gem::Dependency
140
- name: loofah
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - '='
144
- - !ruby/object:Gem::Version
145
- version: 2.16.0
146
- type: :runtime
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - '='
151
- - !ruby/object:Gem::Version
152
- version: 2.16.0
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: net-http-digest_auth
155
155
  requirement: !ruby/object:Gem::Requirement
@@ -206,20 +206,34 @@ dependencies:
206
206
  - - "~>"
207
207
  - !ruby/object:Gem::Version
208
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
209
223
  - !ruby/object:Gem::Dependency
210
224
  name: rest-client
211
225
  requirement: !ruby/object:Gem::Requirement
212
226
  requirements:
213
227
  - - '='
214
228
  - !ruby/object:Gem::Version
215
- version: 2.0.2
229
+ version: 2.1.0
216
230
  type: :runtime
217
231
  prerelease: false
218
232
  version_requirements: !ruby/object:Gem::Requirement
219
233
  requirements:
220
234
  - - '='
221
235
  - !ruby/object:Gem::Version
222
- version: 2.0.2
236
+ version: 2.1.0
223
237
  - !ruby/object:Gem::Dependency
224
238
  name: ruby-progressbar
225
239
  requirement: !ruby/object:Gem::Requirement
@@ -434,6 +448,7 @@ files:
434
448
  - lib/workato/cli/generators/connector_generator.rb
435
449
  - lib/workato/cli/generators/master_key_generator.rb
436
450
  - lib/workato/cli/main.rb
451
+ - lib/workato/cli/multi_auth_selected_fallback.rb
437
452
  - lib/workato/cli/oauth2_command.rb
438
453
  - lib/workato/cli/push_command.rb
439
454
  - lib/workato/cli/schema_command.rb
@@ -447,7 +462,9 @@ files:
447
462
  - lib/workato/connector/sdk/dsl/account_property.rb
448
463
  - lib/workato/connector/sdk/dsl/aws.rb
449
464
  - lib/workato/connector/sdk/dsl/call.rb
465
+ - lib/workato/connector/sdk/dsl/csv.rb
450
466
  - lib/workato/connector/sdk/dsl/error.rb
467
+ - lib/workato/connector/sdk/dsl/execution_context.rb
451
468
  - lib/workato/connector/sdk/dsl/http.rb
452
469
  - lib/workato/connector/sdk/dsl/lookup_table.rb
453
470
  - lib/workato/connector/sdk/dsl/time.rb
@@ -474,14 +491,15 @@ files:
474
491
  - lib/workato/connector/sdk/trigger.rb
475
492
  - lib/workato/connector/sdk/version.rb
476
493
  - lib/workato/connector/sdk/workato_schemas.rb
477
- - lib/workato/connector/sdk/xml.rb
478
494
  - lib/workato/extension/array.rb
479
495
  - lib/workato/extension/case_sensitive_headers.rb
496
+ - lib/workato/extension/content_encoding_decoder.rb
480
497
  - lib/workato/extension/currency.rb
481
498
  - lib/workato/extension/date.rb
482
499
  - lib/workato/extension/enumerable.rb
483
500
  - lib/workato/extension/extra_chain_cert.rb
484
501
  - lib/workato/extension/hash.rb
502
+ - lib/workato/extension/hash_with_indifferent_access.rb
485
503
  - lib/workato/extension/integer.rb
486
504
  - lib/workato/extension/nil_class.rb
487
505
  - lib/workato/extension/object.rb
@@ -491,6 +509,8 @@ files:
491
509
  - lib/workato/extension/time.rb
492
510
  - lib/workato/testing/vcr_encrypted_cassette_serializer.rb
493
511
  - lib/workato/testing/vcr_multipart_body_matcher.rb
512
+ - lib/workato/utilities/encoding.rb
513
+ - lib/workato/utilities/xml.rb
494
514
  - lib/workato/web/app.rb
495
515
  - templates/.rspec.erb
496
516
  - templates/Gemfile.erb
@@ -510,7 +530,13 @@ metadata:
510
530
  documentation_uri: https://docs.workato.com/developing-connectors/sdk/cli.html
511
531
  homepage_uri: https://www.workato.com/
512
532
  source_code_uri: https://github.com/workato/workato-connector-sdk
513
- post_install_message:
533
+ post_install_message: |2+
534
+
535
+ If you updated from workato-connector-sdk prior 1.2.0 your tests could be broken.
536
+
537
+ For more details see here:
538
+ https://github.com/workato/workato-connector-sdk/releases/tag/v1.2.0
539
+
514
540
  rdoc_options: []
515
541
  require_paths:
516
542
  - lib
@@ -525,9 +551,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
525
551
  - !ruby/object:Gem::Version
526
552
  version: '0'
527
553
  requirements: []
528
- rubyforge_project:
529
- rubygems_version: 2.6.14.4
554
+ rubygems_version: 3.2.3
530
555
  signing_key:
531
556
  specification_version: 4
532
557
  summary: Gem for running adapter's code outside Workato infrastructure
533
558
  test_files: []
559
+ ...