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.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/VERSION +1 -0
  4. data/lib/workato/cli/edit_command.rb +3 -1
  5. data/lib/workato/cli/exec_command.rb +76 -10
  6. data/lib/workato/cli/generate_command.rb +2 -2
  7. data/lib/workato/cli/main.rb +17 -10
  8. data/lib/workato/cli/oauth2_command.rb +4 -4
  9. data/lib/workato/cli/push_command.rb +2 -2
  10. data/lib/workato/cli/schema_command.rb +2 -2
  11. data/lib/workato/connector/sdk/account_properties.rb +2 -2
  12. data/lib/workato/connector/sdk/action.rb +20 -70
  13. data/lib/workato/connector/sdk/block_invocation_refinements.rb +2 -10
  14. data/lib/workato/connector/sdk/connection.rb +36 -19
  15. data/lib/workato/connector/sdk/connector.rb +65 -77
  16. data/lib/workato/connector/sdk/core.rb +62 -0
  17. data/lib/workato/connector/sdk/dsl/aws.rb +3 -3
  18. data/lib/workato/connector/sdk/dsl/call.rb +1 -1
  19. data/lib/workato/connector/sdk/dsl/csv_package.rb +133 -0
  20. data/lib/workato/connector/sdk/dsl/execution_context.rb +1 -0
  21. data/lib/workato/connector/sdk/dsl/http.rb +1 -1
  22. data/lib/workato/connector/sdk/dsl/reinvoke_after.rb +84 -0
  23. data/lib/workato/connector/sdk/dsl/stream_package.rb +65 -0
  24. data/lib/workato/connector/sdk/dsl/time.rb +0 -14
  25. data/lib/workato/connector/sdk/dsl/workato_package.rb +146 -0
  26. data/lib/workato/connector/sdk/dsl.rb +63 -10
  27. data/lib/workato/connector/sdk/errors.rb +28 -11
  28. data/lib/workato/connector/sdk/operation.rb +9 -2
  29. data/lib/workato/connector/sdk/request.rb +63 -25
  30. data/lib/workato/connector/sdk/schema/field/convertors.rb +2 -2
  31. data/lib/workato/connector/sdk/schema/type/unicode_string.rb +1 -1
  32. data/lib/workato/connector/sdk/schema.rb +7 -5
  33. data/lib/workato/connector/sdk/settings.rb +10 -1
  34. data/lib/workato/connector/sdk/stream.rb +243 -0
  35. data/lib/workato/connector/sdk/streams.rb +71 -0
  36. data/lib/workato/connector/sdk/summarize.rb +2 -2
  37. data/lib/workato/connector/sdk/trigger.rb +14 -7
  38. data/lib/workato/connector/sdk/version.rb +1 -1
  39. data/lib/workato/connector/sdk.rb +19 -46
  40. data/lib/workato/extension/array.rb +2 -0
  41. data/lib/workato/extension/case_sensitive_headers.rb +0 -1
  42. data/lib/workato/extension/content_encoding_decoder.rb +2 -0
  43. data/lib/workato/extension/currency/countries.rb +79 -0
  44. data/lib/workato/extension/currency/countries.yml +18433 -0
  45. data/lib/workato/extension/currency/currencies.rb +55 -0
  46. data/lib/workato/extension/currency/currencies.yml +479 -0
  47. data/lib/workato/extension/currency.rb +73 -5
  48. data/lib/workato/extension/enumerable.rb +2 -2
  49. data/lib/workato/extension/metadata_fix_wrap_kw_args.rb +11 -0
  50. data/lib/workato/extension/string.rb +14 -111
  51. data/lib/workato/testing/vcr_encrypted_cassette_serializer.rb +2 -0
  52. data/lib/workato/types/binary.rb +55 -0
  53. metadata +46 -61
  54. data/lib/workato/connector/sdk/dsl/csv.rb +0 -125
  55. data/lib/workato/connector/sdk/dsl/workato_code_lib.rb +0 -167
@@ -2,41 +2,13 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require 'sorbet-runtime'
5
- ::Method.prepend(T::CompatibilityPatches::MethodExtensions)
6
-
7
- module Workato
8
- module Connector
9
- module Sdk
10
- DEFAULT_MASTER_KEY_ENV = 'WORKATO_CONNECTOR_MASTER_KEY'
11
- DEFAULT_MASTER_KEY_PATH = 'master.key'
12
-
13
- DEFAULT_CONNECTOR_PATH = 'connector.rb'
14
-
15
- DEFAULT_SETTINGS_PATH = 'settings.yaml'
16
- DEFAULT_ENCRYPTED_SETTINGS_PATH = 'settings.yaml.enc'
17
-
18
- DEFAULT_ACCOUNT_PROPERTIES_PATH = 'account_properties.yaml'
19
- DEFAULT_ENCRYPTED_ACCOUNT_PROPERTIES_PATH = 'account_properties.yaml.enc'
20
-
21
- DEFAULT_LOOKUP_TABLES_PATH = 'lookup_tables.yaml'
22
-
23
- DEFAULT_TIME_ZONE = 'Pacific Time (US & Canada)'
24
-
25
- DEFAULT_SCHEMAS_PATH = 'workato_schemas.json'
26
-
27
- WORKATO_API_EMAIL_ENV = 'WORKATO_API_EMAIL'
28
- WORKATO_API_TOKEN_ENV = 'WORKATO_API_TOKEN'
29
-
30
- WORKATO_BASE_URL_ENV = 'WORKATO_BASE_URL'
31
- DEFAULT_WORKATO_BASE_URL = 'https://app.workato.com'
32
- WORKATO_BASE_URL = T.let(ENV.fetch(WORKATO_BASE_URL_ENV, DEFAULT_WORKATO_BASE_URL), String)
33
- end
34
- end
35
- end
36
5
 
37
6
  # Global libs and monkey patches
38
7
  require 'active_support/all'
39
8
  require 'active_support/json'
9
+
10
+ require_relative '../types/binary'
11
+
40
12
  require_relative '../extension/array'
41
13
  require_relative '../extension/case_sensitive_headers'
42
14
  require_relative '../extension/content_encoding_decoder'
@@ -54,18 +26,19 @@ require_relative '../extension/string'
54
26
  require_relative '../extension/symbol'
55
27
  require_relative '../extension/time'
56
28
 
57
- require_relative './sdk/errors'
58
- require_relative './sdk/account_properties'
59
- require_relative './sdk/action'
60
- require_relative './sdk/connection'
61
- require_relative './sdk/connector'
62
- require_relative './sdk/dsl'
63
- require_relative './sdk/lookup_tables'
64
- require_relative './sdk/object_definitions'
65
- require_relative './sdk/operation'
66
- require_relative './sdk/request'
67
- require_relative './sdk/settings'
68
- require_relative './sdk/summarize'
69
- require_relative './sdk/trigger'
70
- require_relative './sdk/version'
71
- require_relative './sdk/workato_schemas'
29
+ require_relative './sdk/core'
30
+
31
+ begin
32
+ tz = ENV.fetch('TZ', nil)
33
+ if tz.present? && tz != 'UTC'
34
+ warn "WARNING: TZ environment variable is set to '#{tz}'. Set TZ=UTC for consistency with Workato platform'"
35
+ else
36
+ ENV['TZ'] = 'UTC'
37
+ end
38
+ Time.zone = Workato::Connector::Sdk::DEFAULT_TIME_ZONE
39
+ rescue TZInfo::DataSourceNotFound
40
+ puts ''
41
+ puts "tzinfo-data is not present. Please install gem 'tzinfo-data' by 'gem install tzinfo-data'"
42
+ puts ''
43
+ exit!
44
+ end
@@ -1,6 +1,8 @@
1
1
  # typed: false
2
2
  # frozen_string_literal: true
3
3
 
4
+ require 'delegate'
5
+
4
6
  module Workato
5
7
  module Extension
6
8
  module Array
@@ -1,7 +1,6 @@
1
1
  # typed: false
2
2
  # frozen_string_literal: true
3
3
 
4
- require 'rest-client'
5
4
  require 'net/http'
6
5
 
7
6
  module Workato
@@ -1,6 +1,8 @@
1
1
  # typed: false
2
2
  # frozen_string_literal: true
3
3
 
4
+ require 'rest-client'
5
+
4
6
  module Workato
5
7
  module Extension
6
8
  module ContentEncodingDecoder
@@ -0,0 +1,79 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module Workato
5
+ module Extension
6
+ module Currency
7
+ class Countries
8
+ extend T::Sig
9
+
10
+ include Singleton
11
+
12
+ class << self
13
+ extend T::Sig
14
+
15
+ sig { params(value: ::String).returns(T.nilable(Country)) }
16
+ def find_country(value)
17
+ instance.find_country(value)
18
+ end
19
+ end
20
+
21
+ class State < T::Struct
22
+ const :name, ::String
23
+ const :names, T::Array[::String]
24
+ end
25
+
26
+ private_constant :State
27
+
28
+ class Country < T::Struct
29
+ const :name, ::String
30
+ const :names, T::Array[::String]
31
+ const :states, T::Hash[::String, State]
32
+ const :alpha2, ::String
33
+ const :alpha3, ::String
34
+ const :number, ::String
35
+ const :currency_code, T.nilable(::String)
36
+ end
37
+
38
+ private_constant :Country
39
+
40
+ def initialize
41
+ @countries = load_countries
42
+ end
43
+
44
+ sig { params(value: ::String).returns(T.nilable(Country)) }
45
+ def find_country(value)
46
+ value = value.upcase
47
+ countries.find do |c|
48
+ c.alpha2 == value || c.alpha3 == value || c.number == value || # already in upper case
49
+ c.name.upcase == value || c.names.any? { |name| name.upcase == value }
50
+ end
51
+ end
52
+
53
+ private
54
+
55
+ sig { returns(T::Array[Country]) }
56
+ attr_reader :countries
57
+
58
+ sig { returns(T::Array[Country]) }
59
+ def load_countries
60
+ YAML.load_file(File.expand_path('./countries.yml', __dir__)).map do |data|
61
+ Country.new(
62
+ name: data['name'].freeze,
63
+ names: data['names'].map!(&:freeze).freeze,
64
+ alpha2: data['alpha2'].freeze,
65
+ alpha3: data['alpha3'].freeze,
66
+ number: data['number'].freeze,
67
+ currency_code: data['currency']&.freeze,
68
+ states: data['states'].transform_values do |s|
69
+ State.new(name: s['name'].freeze, names: ::Array.wrap(s['names']).map!(&:freeze).freeze)
70
+ end.freeze
71
+ ).freeze
72
+ end.freeze
73
+ end
74
+ end
75
+
76
+ private_constant :Countries
77
+ end
78
+ end
79
+ end