nodexpay 0.1.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.
data/rbi/nodex_pay.rbi ADDED
@@ -0,0 +1,243 @@
1
+ # typed: strict
2
+
3
+ module NodexPay
4
+ VERSION = T.let(T.unsafe(nil), String)
5
+
6
+ class Error < StandardError; end
7
+ class ConfigurationError < Error; end
8
+ class ValidationError < Error; end
9
+ class SignatureVerificationError < Error; end
10
+ class TransportError < Error; end
11
+ class TimeoutError < TransportError; end
12
+ class InvalidResponseError < Error; end
13
+
14
+ class APIError < Error
15
+ ERROR_NAMES = T.let(T.unsafe(nil), T::Hash[Integer, String])
16
+
17
+ sig { returns(Symbol) }
18
+ attr_reader :operation
19
+
20
+ sig { returns(Integer) }
21
+ attr_reader :status
22
+
23
+ sig { returns(T::Array[Integer]) }
24
+ attr_reader :error_codes
25
+
26
+ sig { returns(T::Hash[String, String]) }
27
+ attr_reader :response_headers
28
+
29
+ sig { returns(String) }
30
+ attr_reader :response_body
31
+
32
+ sig do
33
+ params(
34
+ operation: Symbol,
35
+ status: Integer,
36
+ error_codes: T::Array[Integer],
37
+ response_headers: T::Hash[String, String],
38
+ response_body: String
39
+ ).void
40
+ end
41
+ def initialize(operation:, status:, error_codes:, response_headers:, response_body:); end
42
+ end
43
+
44
+ class BadRequestError < APIError; end
45
+ class ServiceUnavailableError < APIError; end
46
+ class UnexpectedHTTPStatusError < APIError; end
47
+
48
+ class Payment < Data
49
+ sig { returns(String) }
50
+ attr_reader :url
51
+
52
+ sig { returns(String) }
53
+ attr_reader :token
54
+
55
+ sig { returns(T.nilable(String)) }
56
+ attr_reader :ext_reserved
57
+
58
+ sig { returns(T.nilable(String)) }
59
+ attr_reader :ext_description
60
+
61
+ sig do
62
+ params(
63
+ url: String,
64
+ token: String,
65
+ ext_reserved: T.nilable(String),
66
+ ext_description: T.nilable(String)
67
+ ).void
68
+ end
69
+ def initialize(url:, token:, ext_reserved:, ext_description:); end
70
+ end
71
+
72
+ class PaymentResult < Data
73
+ sig { returns(String) }
74
+ attr_reader :order_code
75
+
76
+ sig { returns(String) }
77
+ attr_reader :transaction_code
78
+
79
+ sig { returns(String) }
80
+ attr_reader :amount
81
+
82
+ sig { returns(String) }
83
+ attr_reader :symbol
84
+
85
+ sig { returns(T::Boolean) }
86
+ attr_reader :result
87
+
88
+ sig { returns(String) }
89
+ attr_reader :chain_id
90
+
91
+ sig { returns(String) }
92
+ attr_reader :transaction_hash
93
+
94
+ sig do
95
+ params(
96
+ order_code: String,
97
+ transaction_code: String,
98
+ amount: String,
99
+ symbol: String,
100
+ result: T::Boolean,
101
+ chain_id: String,
102
+ transaction_hash: String
103
+ ).void
104
+ end
105
+ def initialize(order_code:, transaction_code:, amount:, symbol:, result:, chain_id:, transaction_hash:); end
106
+
107
+ sig { returns(T::Boolean) }
108
+ def success?; end
109
+ end
110
+
111
+ module Transport
112
+ class Request < Data
113
+ sig { returns(Symbol) }
114
+ attr_reader :method
115
+
116
+ sig { returns(URI::Generic) }
117
+ attr_reader :uri
118
+
119
+ sig { returns(T::Hash[String, String]) }
120
+ attr_reader :headers
121
+
122
+ sig { returns(String) }
123
+ attr_reader :body
124
+
125
+ sig { returns(Numeric) }
126
+ attr_reader :open_timeout
127
+
128
+ sig { returns(Numeric) }
129
+ attr_reader :read_timeout
130
+
131
+ sig { returns(Numeric) }
132
+ attr_reader :write_timeout
133
+
134
+ sig do
135
+ params(
136
+ method: Symbol,
137
+ uri: URI::Generic,
138
+ headers: T::Hash[String, String],
139
+ body: String,
140
+ open_timeout: Numeric,
141
+ read_timeout: Numeric,
142
+ write_timeout: Numeric
143
+ ).void
144
+ end
145
+ def initialize(method:, uri:, headers:, body:, open_timeout:, read_timeout:, write_timeout:); end
146
+ end
147
+
148
+ class Response < Data
149
+ sig { returns(Integer) }
150
+ attr_reader :status
151
+
152
+ sig { returns(T::Hash[String, String]) }
153
+ attr_reader :headers
154
+
155
+ sig { returns(String) }
156
+ attr_reader :body
157
+
158
+ sig do
159
+ params(
160
+ status: Integer,
161
+ headers: T::Hash[String, String],
162
+ body: String
163
+ ).void
164
+ end
165
+ def initialize(status:, headers:, body:); end
166
+ end
167
+
168
+ class NetHTTP
169
+ sig { params(request: Request).returns(Response) }
170
+ def call(request); end
171
+ end
172
+ end
173
+
174
+ class Client
175
+ BASE_URLS = T.let(T.unsafe(nil), T::Hash[Symbol, String])
176
+ DEFAULT_OPEN_TIMEOUT = T.let(T.unsafe(nil), Integer)
177
+ DEFAULT_READ_TIMEOUT = T.let(T.unsafe(nil), Integer)
178
+ DEFAULT_WRITE_TIMEOUT = T.let(T.unsafe(nil), Integer)
179
+
180
+ sig { returns(Symbol) }
181
+ attr_reader :environment
182
+
183
+ sig { returns(Numeric) }
184
+ attr_reader :open_timeout
185
+
186
+ sig { returns(Numeric) }
187
+ attr_reader :read_timeout
188
+
189
+ sig { returns(Numeric) }
190
+ attr_reader :write_timeout
191
+
192
+ sig do
193
+ params(
194
+ identification_token: String,
195
+ hash_token: String,
196
+ environment: Symbol,
197
+ open_timeout: Numeric,
198
+ read_timeout: Numeric,
199
+ write_timeout: Numeric,
200
+ transport: T.untyped
201
+ ).void
202
+ end
203
+ def initialize(
204
+ identification_token:,
205
+ hash_token:,
206
+ environment:,
207
+ open_timeout: 5,
208
+ read_timeout: 30,
209
+ write_timeout: 30,
210
+ transport: nil
211
+ ); end
212
+
213
+ sig do
214
+ params(
215
+ order_code: String,
216
+ amount: T.nilable(T.any(String, Integer, BigDecimal)),
217
+ amount_type: T.nilable(T.any(String, Symbol)),
218
+ color_theme: T.nilable(T.any(String, Symbol)),
219
+ ui_mode: T.nilable(T.any(String, Symbol)),
220
+ ext_description: T.nilable(String),
221
+ deadline: T.nilable(T.any(Time, Integer)),
222
+ description: T.nilable(String)
223
+ ).returns(Payment)
224
+ end
225
+ def create_payment(
226
+ order_code:,
227
+ amount: nil,
228
+ amount_type: nil,
229
+ color_theme: nil,
230
+ ui_mode: nil,
231
+ ext_description: nil,
232
+ deadline: nil,
233
+ description: nil
234
+ ); end
235
+
236
+ sig { params(order_code: String).returns(TrueClass) }
237
+ def cancel_payment(order_code:); end
238
+
239
+ sig { params(raw_body: String).returns(PaymentResult) }
240
+ def verify_payment_result(raw_body); end
241
+ end
242
+ end
243
+
data/sig/nodex_pay.rbs ADDED
@@ -0,0 +1,165 @@
1
+ module NodexPay
2
+ VERSION: String
3
+
4
+ class Error < StandardError
5
+ end
6
+
7
+ class ConfigurationError < Error
8
+ end
9
+
10
+ class ValidationError < Error
11
+ end
12
+
13
+ class SignatureVerificationError < Error
14
+ end
15
+
16
+ class TransportError < Error
17
+ end
18
+
19
+ class TimeoutError < TransportError
20
+ end
21
+
22
+ class InvalidResponseError < Error
23
+ end
24
+
25
+ class APIError < Error
26
+ ERROR_NAMES: Hash[Integer, String]
27
+
28
+ attr_reader operation: Symbol
29
+ attr_reader status: Integer
30
+ attr_reader error_codes: Array[Integer]
31
+ attr_reader response_headers: Hash[String, String]
32
+ attr_reader response_body: String
33
+
34
+ def initialize: (
35
+ operation: Symbol,
36
+ status: Integer,
37
+ error_codes: Array[Integer],
38
+ response_headers: Hash[String, String],
39
+ response_body: String
40
+ ) -> void
41
+ end
42
+
43
+ class BadRequestError < APIError
44
+ end
45
+
46
+ class ServiceUnavailableError < APIError
47
+ end
48
+
49
+ class UnexpectedHTTPStatusError < APIError
50
+ end
51
+
52
+ class Payment
53
+ attr_reader url: String
54
+ attr_reader token: String
55
+ attr_reader ext_reserved: String?
56
+ attr_reader ext_description: String?
57
+
58
+ def initialize: (
59
+ url: String,
60
+ token: String,
61
+ ext_reserved: String?,
62
+ ext_description: String?
63
+ ) -> void
64
+ end
65
+
66
+ class PaymentResult
67
+ attr_reader order_code: String
68
+ attr_reader transaction_code: String
69
+ attr_reader amount: String
70
+ attr_reader symbol: String
71
+ attr_reader result: bool
72
+ attr_reader chain_id: String
73
+ attr_reader transaction_hash: String
74
+
75
+ def initialize: (
76
+ order_code: String,
77
+ transaction_code: String,
78
+ amount: String,
79
+ symbol: String,
80
+ result: bool,
81
+ chain_id: String,
82
+ transaction_hash: String
83
+ ) -> void
84
+
85
+ def success?: () -> bool
86
+ end
87
+
88
+ module Transport
89
+ class Request
90
+ attr_reader method: :post
91
+ attr_reader uri: URI::Generic
92
+ attr_reader headers: Hash[String, String]
93
+ attr_reader body: String
94
+ attr_reader open_timeout: Numeric
95
+ attr_reader read_timeout: Numeric
96
+ attr_reader write_timeout: Numeric
97
+
98
+ def initialize: (
99
+ method: :post,
100
+ uri: URI::Generic,
101
+ headers: Hash[String, String],
102
+ body: String,
103
+ open_timeout: Numeric,
104
+ read_timeout: Numeric,
105
+ write_timeout: Numeric
106
+ ) -> void
107
+ end
108
+
109
+ class Response
110
+ attr_reader status: Integer
111
+ attr_reader headers: Hash[String, String]
112
+ attr_reader body: String
113
+
114
+ def initialize: (
115
+ status: Integer,
116
+ headers: Hash[String, String],
117
+ body: String
118
+ ) -> void
119
+ end
120
+
121
+ interface _Transport
122
+ def call: (Request request) -> Response
123
+ end
124
+
125
+ class NetHTTP
126
+ include _Transport
127
+ end
128
+ end
129
+
130
+ class Client
131
+ BASE_URLS: Hash[Symbol, String]
132
+ DEFAULT_OPEN_TIMEOUT: Integer
133
+ DEFAULT_READ_TIMEOUT: Integer
134
+ DEFAULT_WRITE_TIMEOUT: Integer
135
+
136
+ attr_reader environment: :production | :testnet
137
+ attr_reader open_timeout: Numeric
138
+ attr_reader read_timeout: Numeric
139
+ attr_reader write_timeout: Numeric
140
+
141
+ def initialize: (
142
+ identification_token: String,
143
+ hash_token: String,
144
+ environment: :production | :testnet,
145
+ ?open_timeout: Numeric,
146
+ ?read_timeout: Numeric,
147
+ ?write_timeout: Numeric,
148
+ ?transport: Transport::_Transport?
149
+ ) -> void
150
+
151
+ def create_payment: (
152
+ order_code: String,
153
+ ?amount: String | Integer | BigDecimal | nil,
154
+ ?amount_type: String | Symbol | nil,
155
+ ?color_theme: String | Symbol | nil,
156
+ ?ui_mode: String | Symbol | nil,
157
+ ?ext_description: String?,
158
+ ?deadline: Time | Integer | nil,
159
+ ?description: String?
160
+ ) -> Payment
161
+
162
+ def cancel_payment: (order_code: String) -> true
163
+ def verify_payment_result: (String raw_body) -> PaymentResult
164
+ end
165
+ end
metadata ADDED
@@ -0,0 +1,162 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nodexpay
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - supermomonga
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: minitest
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '5'
19
+ - - "<"
20
+ - !ruby/object:Gem::Version
21
+ version: '7'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: '5'
29
+ - - "<"
30
+ - !ruby/object:Gem::Version
31
+ version: '7'
32
+ - !ruby/object:Gem::Dependency
33
+ name: bigdecimal
34
+ requirement: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: '3'
39
+ - - "<"
40
+ - !ruby/object:Gem::Version
41
+ version: '5'
42
+ type: :development
43
+ prerelease: false
44
+ version_requirements: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '3'
49
+ - - "<"
50
+ - !ruby/object:Gem::Version
51
+ version: '5'
52
+ - !ruby/object:Gem::Dependency
53
+ name: rake
54
+ requirement: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: '13'
59
+ - - "<"
60
+ - !ruby/object:Gem::Version
61
+ version: '14'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '13'
69
+ - - "<"
70
+ - !ruby/object:Gem::Version
71
+ version: '14'
72
+ - !ruby/object:Gem::Dependency
73
+ name: rbs
74
+ requirement: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: '3'
79
+ - - "<"
80
+ - !ruby/object:Gem::Version
81
+ version: '4'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '3'
89
+ - - "<"
90
+ - !ruby/object:Gem::Version
91
+ version: '4'
92
+ - !ruby/object:Gem::Dependency
93
+ name: sorbet
94
+ requirement: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '0.6'
99
+ - - "<"
100
+ - !ruby/object:Gem::Version
101
+ version: '0.7'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0.6'
109
+ - - "<"
110
+ - !ruby/object:Gem::Version
111
+ version: '0.7'
112
+ description: A small, dependency-free Ruby client for creating and cancelling Nodex
113
+ Pay payments and verifying Payment Result callbacks.
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - LICENSE.txt
119
+ - README.md
120
+ - docs/README.md
121
+ - docs/api-contract.md
122
+ - docs/architecture.md
123
+ - docs/http-and-errors.md
124
+ - docs/implementation-plan.md
125
+ - docs/payment-results.md
126
+ - docs/testing.md
127
+ - lib/nodex_pay.rb
128
+ - lib/nodex_pay/amount_serializer.rb
129
+ - lib/nodex_pay/client.rb
130
+ - lib/nodex_pay/errors.rb
131
+ - lib/nodex_pay/models.rb
132
+ - lib/nodex_pay/signer.rb
133
+ - lib/nodex_pay/transport.rb
134
+ - lib/nodex_pay/validator.rb
135
+ - lib/nodex_pay/version.rb
136
+ - rbi/nodex_pay.rbi
137
+ - sig/nodex_pay.rbs
138
+ homepage: https://app.nodexpay.com/
139
+ licenses:
140
+ - MIT
141
+ metadata:
142
+ homepage_uri: https://app.nodexpay.com/
143
+ documentation_uri: https://nodex-pay.gitbook.io/docs/integration-guide/apis
144
+ rubygems_mfa_required: 'true'
145
+ rdoc_options: []
146
+ require_paths:
147
+ - lib
148
+ required_ruby_version: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '3.4'
153
+ required_rubygems_version: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - ">="
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ requirements: []
159
+ rubygems_version: 4.0.16
160
+ specification_version: 4
161
+ summary: Unofficial Ruby client SDK for the Nodex Pay API
162
+ test_files: []