workato-connector-sdk 0.1.0 → 0.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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +57 -30
  3. data/exe/workato +12 -1
  4. data/lib/workato/cli/edit_command.rb +1 -3
  5. data/lib/workato/cli/exec_command.rb +21 -5
  6. data/lib/workato/cli/generate_command.rb +1 -2
  7. data/lib/workato/cli/generators/connector_generator.rb +4 -1
  8. data/lib/workato/cli/main.rb +50 -3
  9. data/lib/workato/cli/oauth2_command.rb +180 -0
  10. data/lib/workato/cli/push_command.rb +36 -24
  11. data/lib/workato/connector/sdk/action.rb +52 -4
  12. data/lib/workato/connector/sdk/connection.rb +144 -0
  13. data/lib/workato/connector/sdk/connector.rb +24 -9
  14. data/lib/workato/connector/sdk/dsl/time.rb +8 -1
  15. data/lib/workato/connector/sdk/dsl/workato_code_lib.rb +4 -4
  16. data/lib/workato/connector/sdk/errors.rb +13 -0
  17. data/lib/workato/connector/sdk/object_definitions.rb +10 -10
  18. data/lib/workato/connector/sdk/operation.rb +37 -39
  19. data/lib/workato/connector/sdk/request.rb +11 -7
  20. data/lib/workato/connector/sdk/schema/field/array.rb +25 -0
  21. data/lib/workato/connector/sdk/schema/field/convertors.rb +189 -0
  22. data/lib/workato/connector/sdk/schema/field/date.rb +28 -0
  23. data/lib/workato/connector/sdk/schema/field/date_time.rb +28 -0
  24. data/lib/workato/connector/sdk/schema/field/integer.rb +27 -0
  25. data/lib/workato/connector/sdk/schema/field/number.rb +27 -0
  26. data/lib/workato/connector/sdk/schema/field/object.rb +25 -0
  27. data/lib/workato/connector/sdk/schema/field/string.rb +26 -0
  28. data/lib/workato/connector/sdk/schema/type/time.rb +53 -0
  29. data/lib/workato/connector/sdk/schema/type/unicode_string.rb +22 -0
  30. data/lib/workato/connector/sdk/schema.rb +230 -0
  31. data/lib/workato/connector/sdk/settings.rb +6 -3
  32. data/lib/workato/connector/sdk/trigger.rb +25 -0
  33. data/lib/workato/connector/sdk/version.rb +1 -1
  34. data/lib/workato/connector/sdk.rb +1 -0
  35. data/lib/workato/extension/string.rb +16 -10
  36. data/lib/workato/web/app.rb +23 -0
  37. data/templates/Gemfile.erb +1 -0
  38. data/templates/spec/action_spec.rb.erb +7 -1
  39. data/templates/spec/trigger_spec.rb.erb +6 -0
  40. metadata +95 -7
@@ -0,0 +1,230 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Workato
4
+ module Connector
5
+ module Sdk
6
+ class Schema < SimpleDelegator
7
+ def initialize(schema: [])
8
+ super(Fields.new(::Array.wrap(schema).map(&:with_indifferent_access)))
9
+ end
10
+
11
+ def trim(input)
12
+ input.with_indifferent_access.keep_if { |property_name| includes_property?(property_name) }
13
+ end
14
+
15
+ def apply(input, enforce_required:, &block)
16
+ input.with_indifferent_access.tap do |input_with_indifferent_access|
17
+ apply_to_hash(self, input_with_indifferent_access, enforce_required: enforce_required, &block)
18
+ end
19
+ end
20
+
21
+ def +(other)
22
+ if other.is_a?(Schema)
23
+ Schema.new.tap do |schema|
24
+ schema.__setobj__(__getobj__ + other.__getobj__)
25
+ end
26
+ else
27
+ Schema.new(schema: __getobj__ + other)
28
+ end
29
+ end
30
+
31
+ private
32
+
33
+ def includes_property?(name)
34
+ find_property_by_name(name).present?
35
+ end
36
+
37
+ def find_property_by_name(name)
38
+ find do |property|
39
+ (property[:name].to_s == name.to_s) || (property.dig(:toggle_field, :name).to_s == name.to_s)
40
+ end
41
+ end
42
+
43
+ def apply_to_hash(properties, object, enforce_required: false, &block)
44
+ return if properties.blank? || object.nil?
45
+
46
+ properties.each do |property|
47
+ apply_to_value(property, object, property[:name], object[property[:name]], &block)
48
+ if (toggle_property = property[:toggle_field])
49
+ apply_to_value(toggle_property, object, toggle_property[:name], object[toggle_property[:name]], &block)
50
+ end
51
+
52
+ next unless enforce_required
53
+ next if optional_or_present?(property, object) || optional_or_present?(property[:toggle_field], object)
54
+
55
+ raise MissingRequiredInput.new(property[:label], property.dig(:toggle_field, :label))
56
+ end
57
+ end
58
+
59
+ def optional_or_present?(property, object)
60
+ property.present? && (
61
+ property[:optional] ||
62
+ property[:runtime_optional] ||
63
+ (value = object[property[:name]]).present? ||
64
+ value.is_a?(FalseClass) ||
65
+ (value.is_a?(::String) && !value.empty?)
66
+ )
67
+ end
68
+
69
+ def apply_to_array(property, array, &block)
70
+ array.each_with_index do |item, index|
71
+ apply_to_value(property, array, index, item, &block)
72
+ end
73
+ end
74
+
75
+ def apply_to_value(property, container, index, value, &block)
76
+ return unless property.present? && value.present?
77
+
78
+ if value.respond_to?(:each_key)
79
+ apply_to_hash(property[:properties], value, &block)
80
+ elsif value.respond_to?(:each_with_index)
81
+ apply_to_array(property, value, &block)
82
+ end
83
+
84
+ container[index] = if !value.nil? && block
85
+ normalize_value(yield(value, property))
86
+ else
87
+ normalize_value(value)
88
+ end
89
+ end
90
+
91
+ def normalize_value(value)
92
+ return value if value.blank?
93
+
94
+ case value
95
+ when ::Time
96
+ return Type::Time.from_time(value)
97
+ when ::DateTime
98
+ return Type::Time.from_date_time(value)
99
+ when ::Date
100
+ return value.to_date
101
+ when ::Numeric, ::TrueClass, ::FalseClass, Workato::Extension::Binary, Type::UnicodeString,
102
+ ::Array, ::Hash
103
+ return value
104
+ when Extension::Array::ArrayWhere
105
+ return value.to_a
106
+ when ::String
107
+ if value.encoding == Encoding::ASCII_8BIT
108
+ return Workato::Extension::Binary.new(value)
109
+ end
110
+
111
+ return Type::UnicodeString.new(value)
112
+ else
113
+ if value.respond_to?(:to_time)
114
+ return Type::Time.from_time(value.to_time)
115
+ end
116
+
117
+ if value.respond_to?(:read) && value.respond_to?(:rewind)
118
+ value.rewind
119
+ return Workato::Extension::Binary.new(value.read.force_encoding(Encoding::ASCII_8BIT))
120
+ end
121
+ end
122
+
123
+ raise ArgumentError, "Unsupported data type: #{value.class}"
124
+ end
125
+ end
126
+
127
+ class Fields < ::Array
128
+ def initialize(fields)
129
+ ::Array.wrap(fields).each do |field|
130
+ field = prepare_attributes(field)
131
+ self << field_with_defaults(field)
132
+ end
133
+ end
134
+
135
+ private
136
+
137
+ def prepare_attributes(field)
138
+ if (render_input = field.delete(:convert_input) || field[:render_input])
139
+ field[:render_input] = render_input.is_a?(Proc) ? nil : render_input
140
+ end
141
+ if (parse_output = field.delete(:convert_output) || field[:parse_output])
142
+ field[:parse_output] = parse_output.is_a?(Proc) ? nil : parse_output
143
+ end
144
+ field[:optional] = true unless field.key?(:optional)
145
+ field[:label] ||= field[:name].labelize
146
+
147
+ clean_values(field)
148
+
149
+ if (toggle_field = field[:toggle_field]).present?
150
+ raise InvalidSchemaError, 'toggle_hint not present' if field[:toggle_hint].blank?
151
+
152
+ unless toggle_field[:name].present? && toggle_field[:type].present?
153
+ raise InvalidSchemaError, 'toggle_field not complete'
154
+ end
155
+
156
+ if toggle_field[:optional].present? && (toggle_field[:optional] != field[:optional])
157
+ raise InvalidSchemaError, 'toggle field cannot change optional attribute'
158
+ end
159
+
160
+ field[:toggle_field] = field_with_defaults(field[:toggle_field]).tap do |tg_field|
161
+ tg_field.except!(:render_input, :parse_output, :control_type)
162
+ tg_field[:control_type] = toggle_field[:control_type]
163
+ clean_values(tg_field)
164
+ end
165
+ end
166
+
167
+ if field[:control_type].try(:start_with?, 'small-')
168
+ field[:control_type].remove!(/^small-/)
169
+ elsif field[:control_type].try(:start_with?, 'medium-')
170
+ field[:control_type].remove!(/^medium-/)
171
+ end
172
+
173
+ field
174
+ end
175
+
176
+ def clean_values(field)
177
+ field.transform_values! do |value|
178
+ value.presence && (value.is_a?(::Symbol) && value.to_s || value)
179
+ end
180
+ field.compact!
181
+ field
182
+ end
183
+
184
+ def field_with_defaults(field)
185
+ type = field.delete(:type).to_s
186
+
187
+ case type
188
+ when 'integer'
189
+ Schema::Field::Integer.new(field)
190
+ when 'number', 'boolean'
191
+ Schema::Field::Number.new(field)
192
+ when 'date_time', 'timestamp'
193
+ Schema::Field::DateTime.new(field)
194
+ when 'date'
195
+ Schema::Field::Date.new(field)
196
+ when 'object'
197
+ field[:properties] = Fields.new(field[:properties])
198
+ field.delete(:control_type)
199
+ Schema::Field::Object.new(field)
200
+ when 'array'
201
+ of = field[:of] = (field[:of] || 'object').to_s
202
+ if of == 'object'
203
+ field[:properties] = Fields.new(field[:properties])
204
+ else
205
+ field.merge(
206
+ field_with_defaults(field.merge(type: of)).except(:render_input, :parse_output)
207
+ )
208
+ end
209
+ Schema::Field::Array.new(field)
210
+ else
211
+ Schema::Field::String.new(field)
212
+ end
213
+ end
214
+ end
215
+
216
+ private_constant :Fields
217
+ end
218
+ end
219
+ end
220
+
221
+ require_relative './schema/field/array'
222
+ require_relative './schema/field/date'
223
+ require_relative './schema/field/date_time'
224
+ require_relative './schema/field/integer'
225
+ require_relative './schema/field/number'
226
+ require_relative './schema/field/object'
227
+ require_relative './schema/field/string'
228
+
229
+ require_relative './schema/type/time'
230
+ require_relative './schema/type/unicode_string'
@@ -45,6 +45,8 @@ module Workato
45
45
  begin
46
46
  @encrypted = false
47
47
  read_plain_file
48
+ rescue KeyError
49
+ raise
48
50
  rescue StandardError
49
51
  @encrypted = true
50
52
  read_encrypted_file
@@ -76,7 +78,7 @@ module Workato
76
78
  YAML.safe_load(f.read, [::Symbol]).to_hash.with_indifferent_access
77
79
  end
78
80
 
79
- name ? all_settings.fetch(name) : all_settings
81
+ (name ? all_settings.fetch(name) : all_settings) || {}
80
82
  end
81
83
 
82
84
  def update_plain_file(new_settings)
@@ -93,7 +95,7 @@ module Workato
93
95
  def read_encrypted_file
94
96
  all_settings = encrypted_configuration.config.with_indifferent_access
95
97
 
96
- name ? all_settings.fetch(name) : all_settings
98
+ (name ? all_settings.fetch(name) : all_settings) || {}
97
99
  end
98
100
 
99
101
  def update_encrypted_file(new_settings)
@@ -106,7 +108,8 @@ module Workato
106
108
 
107
109
  def merge_settings(all_settings, new_settings)
108
110
  if name
109
- all_settings[name] = new_settings
111
+ all_settings[name] ||= {}
112
+ all_settings[name].merge!(new_settings)
110
113
  else
111
114
  all_settings.merge!(new_settings)
112
115
  end
@@ -89,7 +89,32 @@ module Workato
89
89
  end
90
90
  end
91
91
 
92
+ def invoke(input = {}, payload = {}, headers = {}, params = {})
93
+ extended_schema = extended_schema(nil, input)
94
+ config_schema = Schema.new(schema: config_fields_schema)
95
+ input_schema = Schema.new(schema: extended_schema[:input])
96
+ output_schema = Schema.new(schema: extended_schema[:output])
97
+
98
+ input = apply_input_schema(input, config_schema + input_schema)
99
+ output = if webhook_notification?
100
+ webhook_notification(input, payload, input_schema, output_schema, headers, params)
101
+ else
102
+ poll(nil, input, nil, input_schema, output_schema)
103
+ end
104
+ output[:events].each do |event|
105
+ apply_output_schema(event, output_schema)
106
+ end
107
+
108
+ output
109
+ end
110
+
111
+ private
112
+
92
113
  alias trigger operation
114
+
115
+ def webhook_notification?
116
+ trigger[:webhook_notification].present?
117
+ end
93
118
  end
94
119
  end
95
120
  end
@@ -3,7 +3,7 @@
3
3
  module Workato
4
4
  module Connector
5
5
  module Sdk
6
- VERSION = '0.1.0'
6
+ VERSION = '0.3.0'
7
7
  end
8
8
  end
9
9
  end
@@ -43,6 +43,7 @@ require_relative '../extension/time'
43
43
 
44
44
  require_relative './sdk/account_properties'
45
45
  require_relative './sdk/action'
46
+ require_relative './sdk/connection'
46
47
  require_relative './sdk/connector'
47
48
  require_relative './sdk/dsl'
48
49
  require_relative './sdk/errors'
@@ -98,7 +98,7 @@ module Workato
98
98
  alias encode_hex to_hex
99
99
 
100
100
  def decode_hex
101
- Binary.new([self].pack('H*'))
101
+ Extension::Binary.new([self].pack('H*'))
102
102
  end
103
103
 
104
104
  def encode_base64
@@ -106,7 +106,7 @@ module Workato
106
106
  end
107
107
 
108
108
  def decode_base64
109
- Binary.new(Base64.decode64(self))
109
+ Extension::Binary.new(Base64.decode64(self))
110
110
  end
111
111
 
112
112
  def encode_urlsafe_base64
@@ -118,21 +118,27 @@ module Workato
118
118
  end
119
119
 
120
120
  def decode_urlsafe_base64
121
- Binary.new(Base64.urlsafe_decode64(self))
121
+ Extension::Binary.new(Base64.urlsafe_decode64(self))
122
122
  end
123
123
 
124
124
  def encode_sha256
125
- Binary.new(::Digest::SHA256.digest(self))
125
+ Extension::Binary.new(::Digest::SHA256.digest(self))
126
126
  end
127
127
 
128
128
  def hmac_sha256(key)
129
129
  digest = ::OpenSSL::Digest.new('sha256')
130
- Binary.new(::OpenSSL::HMAC.digest(digest, key, self))
130
+ Extension::Binary.new(::OpenSSL::HMAC.digest(digest, key, self))
131
131
  end
132
132
 
133
133
  def hmac_sha512(key)
134
134
  digest = ::OpenSSL::Digest.new('sha512')
135
- Binary.new(::OpenSSL::HMAC.digest(digest, key, self))
135
+ Extension::Binary.new(::OpenSSL::HMAC.digest(digest, key, self))
136
+ end
137
+
138
+ def rsa_sha256(key)
139
+ digest = ::OpenSSL::Digest.new('sha256')
140
+ private_key = ::OpenSSL::PKey::RSA.new(key)
141
+ Workato::Extension::Binary.new(private_key.sign(digest, self))
136
142
  end
137
143
 
138
144
  def md5_hexdigest
@@ -140,17 +146,17 @@ module Workato
140
146
  end
141
147
 
142
148
  def sha1
143
- Binary.new(::Digest::SHA1.digest(self))
149
+ Extension::Binary.new(::Digest::SHA1.digest(self))
144
150
  end
145
151
 
146
152
  def hmac_sha1(key)
147
153
  digest = ::OpenSSL::Digest.new('sha1')
148
- Binary.new(::OpenSSL::HMAC.digest(digest, key, self))
154
+ Extension::Binary.new(::OpenSSL::HMAC.digest(digest, key, self))
149
155
  end
150
156
 
151
157
  def hmac_md5(key)
152
158
  digest = ::OpenSSL::Digest.new('md5')
153
- Binary.new(::OpenSSL::HMAC.digest(digest, key, self))
159
+ Extension::Binary.new(::OpenSSL::HMAC.digest(digest, key, self))
154
160
  end
155
161
 
156
162
  def from_xml
@@ -228,7 +234,7 @@ module Workato
228
234
  end
229
235
 
230
236
  def as_string(encoding)
231
- String.new(self, encoding: encoding).encode(encoding, invalid: :replace, undef: :replace)
237
+ ::String.new(self, encoding: encoding).encode(encoding, invalid: :replace, undef: :replace)
232
238
  end
233
239
 
234
240
  def as_utf8
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Workato
4
+ module Web
5
+ class App
6
+ CODE_PATH = '/code'
7
+ CALLBACK_PATH = '/oauth/callback'
8
+
9
+ def call(env)
10
+ req = Rack::Request.new(env)
11
+ case req.path_info
12
+ when /#{CODE_PATH}/
13
+ [200, { 'Content-Type' => 'text/plain' }, [@code.to_s]]
14
+ when /#{CALLBACK_PATH}/
15
+ @code = req.params['code']
16
+ [200, { 'Content-Type' => 'text/plain' }, ['We stored response code. Now you can close the browser window']]
17
+ else
18
+ [404, { 'Content-Type' => 'text/plain' }, ['404: Not Found']]
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -5,6 +5,7 @@ source 'https://rubygems.org'
5
5
  gem 'byebug'
6
6
  gem 'rspec'
7
7
  gem 'timecop'
8
+ gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw jruby]
8
9
  gem 'vcr'
9
10
  gem 'webmock'
10
11
  gem 'workato-connector-sdk'
@@ -5,13 +5,19 @@ RSpec.describe 'actions/<%= name %>', :vcr do
5
5
  # Spec describes the most commons blocks of an action. Remove describes that you don't need.
6
6
  # Learn more: https://docs.workato.com/developing-connectors/sdk/cli/reference/rspec-commands.html
7
7
 
8
+ subject(:output) { connector.actions.<%= name %>(input) }
9
+
8
10
  let(:connector) { Workato::Connector::Sdk::Connector.from_file('connector.rb', settings) }
9
11
  let(:settings) { Workato::Connector::Sdk::Settings.from_default_file }
12
+ let(:input) { {} }
13
+
14
+ pending 'add some examples for action output'
10
15
 
16
+ # Or add more fine grained tests for each action definition block
11
17
  let(:action) { connector.actions.<%= name %> }
12
18
 
13
19
  describe 'execute' do
14
- subject(:output) { action.execute(settings, input, extended_input_schema, extended_output_schema) }
20
+ subject(:output) { action.execute(settings, input, extended_input_schema, extended_output_schema, continue) }
15
21
 
16
22
  pending 'add some examples'
17
23
  end
@@ -6,9 +6,15 @@ RSpec.describe 'triggers/<%= name %>', :vcr do
6
6
  # Depending on the type of your trigger remove describes that you don't need.
7
7
  # Learn more: https://docs.workato.com/developing-connectors/sdk/cli/reference/rspec-commands.html
8
8
 
9
+ subject(:output) { connector.triggers.<%= name %>(input) }
10
+
9
11
  let(:connector) { Workato::Connector::Sdk::Connector.from_file('connector.rb', settings) }
10
12
  let(:settings) { Workato::Connector::Sdk::Settings.from_default_file }
13
+ let(:input) { {} }
14
+
15
+ pending 'add some examples for trigger output'
11
16
 
17
+ # Or add more fine grained tests for each trigger definition block
12
18
  let(:trigger) { connector.triggers.<%= name %> }
13
19
 
14
20
  describe 'webhook_subscribe' do
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: 0.1.0
4
+ version: 0.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: 2021-09-15 00:00:00.000000000 Z
11
+ date: 2021-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - '='
53
53
  - !ruby/object:Gem::Version
54
54
  version: 0.4.2
55
+ - !ruby/object:Gem::Dependency
56
+ name: em-http-request
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: gyoku
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -80,20 +94,34 @@ dependencies:
80
94
  - - '='
81
95
  - !ruby/object:Gem::Version
82
96
  version: 1.5.6
97
+ - !ruby/object:Gem::Dependency
98
+ name: launchy
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '2.0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '2.0'
83
111
  - !ruby/object:Gem::Dependency
84
112
  name: loofah
85
113
  requirement: !ruby/object:Gem::Requirement
86
114
  requirements:
87
115
  - - '='
88
116
  - !ruby/object:Gem::Version
89
- version: 2.9.1
117
+ version: 2.12.0
90
118
  type: :runtime
91
119
  prerelease: false
92
120
  version_requirements: !ruby/object:Gem::Requirement
93
121
  requirements:
94
122
  - - '='
95
123
  - !ruby/object:Gem::Version
96
- version: 2.9.1
124
+ version: 2.12.0
97
125
  - !ruby/object:Gem::Dependency
98
126
  name: net-http-digest_auth
99
127
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +150,34 @@ dependencies:
122
150
  - - '='
123
151
  - !ruby/object:Gem::Version
124
152
  version: 1.10.10
153
+ - !ruby/object:Gem::Dependency
154
+ name: oauth2
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '1.0'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '1.0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: rack
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '2.0'
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '2.0'
125
181
  - !ruby/object:Gem::Dependency
126
182
  name: rest-client
127
183
  requirement: !ruby/object:Gem::Requirement
@@ -178,6 +234,20 @@ dependencies:
178
234
  - - "~>"
179
235
  - !ruby/object:Gem::Version
180
236
  version: '1.0'
237
+ - !ruby/object:Gem::Dependency
238
+ name: webrick
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - "~>"
242
+ - !ruby/object:Gem::Version
243
+ version: '1.0'
244
+ type: :runtime
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - "~>"
249
+ - !ruby/object:Gem::Version
250
+ version: '1.0'
181
251
  - !ruby/object:Gem::Dependency
182
252
  name: bundler
183
253
  requirement: !ruby/object:Gem::Requirement
@@ -294,11 +364,13 @@ files:
294
364
  - lib/workato/cli/generators/connector_generator.rb
295
365
  - lib/workato/cli/generators/master_key_generator.rb
296
366
  - lib/workato/cli/main.rb
367
+ - lib/workato/cli/oauth2_command.rb
297
368
  - lib/workato/cli/push_command.rb
298
369
  - lib/workato/connector/sdk.rb
299
370
  - lib/workato/connector/sdk/account_properties.rb
300
371
  - lib/workato/connector/sdk/action.rb
301
372
  - lib/workato/connector/sdk/block_invocation_refinements.rb
373
+ - lib/workato/connector/sdk/connection.rb
302
374
  - lib/workato/connector/sdk/connector.rb
303
375
  - lib/workato/connector/sdk/dsl.rb
304
376
  - lib/workato/connector/sdk/dsl/account_property.rb
@@ -314,6 +386,17 @@ files:
314
386
  - lib/workato/connector/sdk/object_definitions.rb
315
387
  - lib/workato/connector/sdk/operation.rb
316
388
  - lib/workato/connector/sdk/request.rb
389
+ - lib/workato/connector/sdk/schema.rb
390
+ - lib/workato/connector/sdk/schema/field/array.rb
391
+ - lib/workato/connector/sdk/schema/field/convertors.rb
392
+ - lib/workato/connector/sdk/schema/field/date.rb
393
+ - lib/workato/connector/sdk/schema/field/date_time.rb
394
+ - lib/workato/connector/sdk/schema/field/integer.rb
395
+ - lib/workato/connector/sdk/schema/field/number.rb
396
+ - lib/workato/connector/sdk/schema/field/object.rb
397
+ - lib/workato/connector/sdk/schema/field/string.rb
398
+ - lib/workato/connector/sdk/schema/type/time.rb
399
+ - lib/workato/connector/sdk/schema/type/unicode_string.rb
317
400
  - lib/workato/connector/sdk/settings.rb
318
401
  - lib/workato/connector/sdk/summarize.rb
319
402
  - lib/workato/connector/sdk/trigger.rb
@@ -336,6 +419,7 @@ files:
336
419
  - lib/workato/extension/time.rb
337
420
  - lib/workato/testing/vcr_encrypted_cassette_serializer.rb
338
421
  - lib/workato/testing/vcr_multipart_body_matcher.rb
422
+ - lib/workato/web/app.rb
339
423
  - templates/.rspec.erb
340
424
  - templates/Gemfile.erb
341
425
  - templates/connector.rb.erb
@@ -346,10 +430,14 @@ files:
346
430
  - templates/spec/pick_list_spec.rb.erb
347
431
  - templates/spec/spec_helper.rb.erb
348
432
  - templates/spec/trigger_spec.rb.erb
349
- homepage: https://docs.workato.com/developing-connectors/sdk.html
433
+ homepage: https://www.workato.com/
350
434
  licenses:
351
435
  - MIT
352
- metadata: {}
436
+ metadata:
437
+ bug_tracker_uri: https://support.workato.com/
438
+ documentation_uri: https://docs.workato.com/developing-connectors/sdk/cli.html
439
+ homepage_uri: https://www.workato.com/
440
+ source_code_uri: https://github.com/workato/workato-connector-sdk
353
441
  post_install_message:
354
442
  rdoc_options: []
355
443
  require_paths:
@@ -365,7 +453,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
365
453
  - !ruby/object:Gem::Version
366
454
  version: '0'
367
455
  requirements: []
368
- rubygems_version: 3.0.8
456
+ rubygems_version: 3.2.3
369
457
  signing_key:
370
458
  specification_version: 4
371
459
  summary: Gem for running adapter's code outside Workato infrastructure