workato-connector-sdk 1.1.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 (59) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -2
  3. data/VERSION +1 -0
  4. data/lib/workato/cli/edit_command.rb +3 -1
  5. data/lib/workato/cli/exec_command.rb +103 -17
  6. data/lib/workato/cli/generate_command.rb +2 -2
  7. data/lib/workato/cli/main.rb +17 -10
  8. data/lib/workato/cli/multi_auth_selected_fallback.rb +33 -0
  9. data/lib/workato/cli/oauth2_command.rb +50 -12
  10. data/lib/workato/cli/push_command.rb +2 -2
  11. data/lib/workato/cli/schema_command.rb +2 -2
  12. data/lib/workato/connector/sdk/account_properties.rb +2 -2
  13. data/lib/workato/connector/sdk/action.rb +20 -70
  14. data/lib/workato/connector/sdk/block_invocation_refinements.rb +2 -10
  15. data/lib/workato/connector/sdk/connection.rb +115 -30
  16. data/lib/workato/connector/sdk/connector.rb +71 -81
  17. data/lib/workato/connector/sdk/core.rb +62 -0
  18. data/lib/workato/connector/sdk/dsl/aws.rb +8 -5
  19. data/lib/workato/connector/sdk/dsl/call.rb +1 -1
  20. data/lib/workato/connector/sdk/dsl/csv_package.rb +133 -0
  21. data/lib/workato/connector/sdk/dsl/execution_context.rb +45 -0
  22. data/lib/workato/connector/sdk/dsl/http.rb +1 -1
  23. data/lib/workato/connector/sdk/dsl/reinvoke_after.rb +84 -0
  24. data/lib/workato/connector/sdk/dsl/stream_package.rb +65 -0
  25. data/lib/workato/connector/sdk/dsl/time.rb +0 -14
  26. data/lib/workato/connector/sdk/dsl/workato_package.rb +146 -0
  27. data/lib/workato/connector/sdk/dsl.rb +64 -10
  28. data/lib/workato/connector/sdk/errors.rb +37 -9
  29. data/lib/workato/connector/sdk/lookup_tables.rb +3 -1
  30. data/lib/workato/connector/sdk/operation.rb +33 -10
  31. data/lib/workato/connector/sdk/request.rb +149 -69
  32. data/lib/workato/connector/sdk/schema/field/convertors.rb +2 -2
  33. data/lib/workato/connector/sdk/schema/type/unicode_string.rb +1 -1
  34. data/lib/workato/connector/sdk/schema.rb +12 -8
  35. data/lib/workato/connector/sdk/settings.rb +14 -3
  36. data/lib/workato/connector/sdk/stream.rb +243 -0
  37. data/lib/workato/connector/sdk/streams.rb +71 -0
  38. data/lib/workato/connector/sdk/summarize.rb +2 -2
  39. data/lib/workato/connector/sdk/trigger.rb +23 -15
  40. data/lib/workato/connector/sdk/version.rb +1 -1
  41. data/lib/workato/connector/sdk.rb +21 -47
  42. data/lib/workato/extension/array.rb +2 -0
  43. data/lib/workato/extension/case_sensitive_headers.rb +0 -26
  44. data/lib/workato/extension/content_encoding_decoder.rb +69 -0
  45. data/lib/workato/extension/currency/countries.rb +79 -0
  46. data/lib/workato/extension/currency/countries.yml +18433 -0
  47. data/lib/workato/extension/currency/currencies.rb +55 -0
  48. data/lib/workato/extension/currency/currencies.yml +479 -0
  49. data/lib/workato/extension/currency.rb +73 -5
  50. data/lib/workato/extension/enumerable.rb +2 -2
  51. data/lib/workato/extension/extra_chain_cert.rb +0 -14
  52. data/lib/workato/extension/hash_with_indifferent_access.rb +19 -0
  53. data/lib/workato/extension/metadata_fix_wrap_kw_args.rb +11 -0
  54. data/lib/workato/extension/string.rb +16 -112
  55. data/lib/workato/testing/vcr_encrypted_cassette_serializer.rb +2 -0
  56. data/lib/workato/types/binary.rb +55 -0
  57. data/lib/workato/{connector/sdk → utilities}/xml.rb +4 -4
  58. metadata +61 -64
  59. data/lib/workato/connector/sdk/dsl/workato_code_lib.rb +0 -160
@@ -1,160 +0,0 @@
1
- # typed: true
2
- # frozen_string_literal: true
3
-
4
- require 'jwt'
5
-
6
- module Workato
7
- module Connector
8
- module Sdk
9
- module Dsl
10
- module WorkatoCodeLib
11
- JWT_ALGORITHMS = %w[RS256 RS384 RS512].freeze
12
- JWT_RSA_KEY_MIN_LENGTH = 2048
13
-
14
- VERIFY_RCA_ALGORITHMS = %w[SHA SHA1 SHA224 SHA256 SHA384 SHA512].freeze
15
-
16
- def workato
17
- WorkatoCodeLib
18
- end
19
-
20
- def parse_json(source)
21
- WorkatoCodeLib.parse_json(source)
22
- end
23
-
24
- def uuid
25
- WorkatoCodeLib.uuid
26
- end
27
-
28
- def encrypt(text, key)
29
- ::Kernel.require('ruby_rncryptor')
30
-
31
- enc_text = ::RubyRNCryptor.encrypt(text, key)
32
- ::Base64.strict_encode64(enc_text)
33
- end
34
-
35
- def decrypt(text, key)
36
- ::Kernel.require('ruby_rncryptor')
37
-
38
- text = ::Base64.decode64(text)
39
- dec_text = ::RubyRNCryptor.decrypt(text, key)
40
- Workato::Extension::Binary.new(dec_text)
41
- rescue Exception => e # rubocop:disable Lint/RescueException
42
- message = e.message.to_s
43
- case message
44
- when /Password may be incorrect/
45
- ::Kernel.raise 'invalid/corrupt input or key'
46
- when /RubyRNCryptor only decrypts version/
47
- ::Kernel.raise 'invalid/corrupt input'
48
- else
49
- ::Kernel.raise
50
- end
51
- end
52
-
53
- def blank; end
54
-
55
- def clear; end
56
-
57
- def null; end
58
-
59
- def skip; end
60
-
61
- class << self
62
- def jwt_encode_rs256(payload, key, header_fields = {})
63
- jwt_encode(payload, key, 'RS256', header_fields)
64
- end
65
-
66
- def jwt_encode(payload, key, algorithm, header_fields = {})
67
- algorithm = algorithm.to_s.upcase
68
- unless JWT_ALGORITHMS.include?(algorithm)
69
- raise "Unsupported signing method. Supports only #{JWT_ALGORITHMS.join(', ')}. Got: '#{algorithm}'"
70
- end
71
-
72
- rsa_private = OpenSSL::PKey::RSA.new(key)
73
- if rsa_private.n.num_bits < JWT_RSA_KEY_MIN_LENGTH
74
- raise "A RSA key of size #{JWT_RSA_KEY_MIN_LENGTH} bits or larger MUST be used with JWT."
75
- end
76
-
77
- header_fields = header_fields.present? ? header_fields.with_indifferent_access.except(:typ, :alg) : {}
78
- ::JWT.encode(payload, rsa_private, algorithm, header_fields)
79
- end
80
-
81
- def verify_rsa(payload, certificate, signature, algorithm = 'SHA256')
82
- algorithm = algorithm.to_s.upcase
83
- unless VERIFY_RCA_ALGORITHMS.include?(algorithm)
84
- raise "Unsupported signing method. Supports only #{VERIFY_RCA_ALGORITHMS.join(', ')}. Got: '#{algorithm}'" # rubocop:disable Layout/LineLength
85
- end
86
-
87
- cert = OpenSSL::X509::Certificate.new(certificate)
88
- digest = OpenSSL::Digest.new(algorithm)
89
- cert.public_key.verify(digest, signature, payload)
90
- rescue OpenSSL::PKey::PKeyError
91
- raise 'An error occurred during signature verification. Check arguments'
92
- rescue OpenSSL::X509::CertificateError
93
- raise 'Invalid certificate format'
94
- end
95
-
96
- def parse_yaml(yaml)
97
- ::Psych.safe_load(yaml)
98
- rescue ::Psych::DisallowedClass => e
99
- raise e.message
100
- end
101
-
102
- def render_yaml(obj)
103
- ::Psych.dump(obj)
104
- end
105
-
106
- def parse_json(source)
107
- JSON.parse(source)
108
- end
109
-
110
- def uuid
111
- SecureRandom.uuid
112
- end
113
-
114
- RANDOM_SIZE = 32
115
-
116
- def random_bytes(len)
117
- unless (len.is_a? ::Integer) && (len <= RANDOM_SIZE)
118
- raise "The requested length or random bytes sequence should be <= #{RANDOM_SIZE}"
119
- end
120
-
121
- Extension::Binary.new(::OpenSSL::Random.random_bytes(len))
122
- end
123
-
124
- ALLOWED_KEY_SIZES = [128, 192, 256].freeze
125
-
126
- def aes_cbc_encrypt(string, key, init_vector = nil)
127
- key_size = key.bytesize * 8
128
- unless ALLOWED_KEY_SIZES.include?(key_size)
129
- raise 'Incorrect key size for AES'
130
- end
131
-
132
- cipher = ::OpenSSL::Cipher.new("AES-#{key_size}-CBC")
133
- cipher.encrypt
134
- cipher.key = key
135
- cipher.iv = init_vector if init_vector.present?
136
- Extension::Binary.new(cipher.update(string) + cipher.final)
137
- end
138
-
139
- def aes_cbc_decrypt(string, key, init_vector = nil)
140
- key_size = key.bytesize * 8
141
- unless ALLOWED_KEY_SIZES.include?(key_size)
142
- raise 'Incorrect key size for AES'
143
- end
144
-
145
- cipher = ::OpenSSL::Cipher.new("AES-#{key_size}-CBC")
146
- cipher.decrypt
147
- cipher.key = key
148
- cipher.iv = init_vector if init_vector.present?
149
- Extension::Binary.new(cipher.update(string) + cipher.final)
150
- end
151
-
152
- def pbkdf2_hmac_sha1(string, salt, iterations = 1000, key_len = 16)
153
- Extension::Binary.new(::OpenSSL::PKCS5.pbkdf2_hmac_sha1(string, salt, iterations, key_len))
154
- end
155
- end
156
- end
157
- end
158
- end
159
- end
160
- end