afterpay 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.
Files changed (48) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +24 -0
  3. data/.gitignore +13 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +5 -0
  6. data/.travis.yml +5 -0
  7. data/Gemfile +8 -0
  8. data/LICENSE +224 -0
  9. data/README.md +103 -0
  10. data/Rakefile +8 -0
  11. data/afterpay.gemspec +41 -0
  12. data/bin/console +15 -0
  13. data/bin/setup +8 -0
  14. data/lib/afterpay/api/base.rb +37 -0
  15. data/lib/afterpay/api/configuration/retrieve.rb +20 -0
  16. data/lib/afterpay/api/configuration.rb +9 -0
  17. data/lib/afterpay/api/order/create.rb +27 -0
  18. data/lib/afterpay/api/order.rb +9 -0
  19. data/lib/afterpay/api/payment/auth.rb +29 -0
  20. data/lib/afterpay/api/payment/capture.rb +29 -0
  21. data/lib/afterpay/api/payment/deferred_capture.rb +30 -0
  22. data/lib/afterpay/api/payment/find.rb +28 -0
  23. data/lib/afterpay/api/payment/refund.rb +30 -0
  24. data/lib/afterpay/api/payment/void.rb +30 -0
  25. data/lib/afterpay/api/payment.rb +9 -0
  26. data/lib/afterpay/callable.rb +11 -0
  27. data/lib/afterpay/components/base.rb +14 -0
  28. data/lib/afterpay/components/consumer.rb +27 -0
  29. data/lib/afterpay/components/contact.rb +52 -0
  30. data/lib/afterpay/components/courier.rb +27 -0
  31. data/lib/afterpay/components/discount.rb +17 -0
  32. data/lib/afterpay/components/item.rb +48 -0
  33. data/lib/afterpay/components/merchant.rb +17 -0
  34. data/lib/afterpay/components/money.rb +17 -0
  35. data/lib/afterpay/components/order.rb +67 -0
  36. data/lib/afterpay/components/payment.rb +22 -0
  37. data/lib/afterpay/components/payment_event.rb +17 -0
  38. data/lib/afterpay/components/refund.rb +29 -0
  39. data/lib/afterpay/error_handler.rb +38 -0
  40. data/lib/afterpay/errors.rb +31 -0
  41. data/lib/afterpay/http_service/request.rb +46 -0
  42. data/lib/afterpay/http_service/response.rb +34 -0
  43. data/lib/afterpay/http_service.rb +30 -0
  44. data/lib/afterpay/initializable.rb +27 -0
  45. data/lib/afterpay/representable.rb +47 -0
  46. data/lib/afterpay/version.rb +5 -0
  47. data/lib/afterpay.rb +66 -0
  48. metadata +311 -0
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Afterpay
4
+ module Initializable
5
+ def self.included(base)
6
+ base.extend ClassMethods
7
+ end
8
+
9
+ def initialize(params = {})
10
+ self.class.accessors.each do |name|
11
+ send :"#{name}=", params[name]
12
+ end
13
+ end
14
+
15
+ module ClassMethods
16
+ def accessors
17
+ @accessors ||= []
18
+ end
19
+
20
+ def attr_accessor(*args)
21
+ accessors.push(*args)
22
+
23
+ super
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+
5
+ module Afterpay
6
+ module Representable
7
+ def self.included(base)
8
+ base.extend Forwardable
9
+ base.def_delegators :as_json, :to_json
10
+ end
11
+
12
+ def as_json
13
+ instance_values.reduce({}) do |mem, (key, value)|
14
+ mem.merge!(camelize(key) => represent(value))
15
+ end
16
+ end
17
+
18
+ private
19
+
20
+ def camelize(value)
21
+ value.gsub(/_(\w)/) { Regexp.last_match(1).upcase }
22
+ end
23
+
24
+ def represent(value)
25
+ return value.as_json if non_primitive?(value)
26
+
27
+ return value.map { |item| represent(item) } if value.is_a?(Array)
28
+
29
+ value
30
+ end
31
+
32
+ def non_primitive?(value)
33
+ value.is_a? Afterpay::Components::Base
34
+ end
35
+
36
+ def instance_values
37
+ Hash[
38
+ instance_variables.map do |name|
39
+ [
40
+ name.to_s[1..-1],
41
+ instance_variable_get(name)
42
+ ]
43
+ end
44
+ ]
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Afterpay
4
+ VERSION = '0.1.0'
5
+ end
data/lib/afterpay.rb ADDED
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'afterpay/api/base'
4
+ require 'afterpay/api/configuration'
5
+ require 'afterpay/api/configuration/retrieve'
6
+ require 'afterpay/api/order'
7
+ require 'afterpay/api/order/create'
8
+ require 'afterpay/api/payment'
9
+ require 'afterpay/api/payment/capture'
10
+ require 'afterpay/api/payment/refund'
11
+ require 'afterpay/api/payment/auth'
12
+ require 'afterpay/api/payment/void'
13
+ require 'afterpay/api/payment/deferred_capture'
14
+ require 'afterpay/api/payment/find'
15
+ require 'afterpay/components/base'
16
+ require 'afterpay/components/consumer'
17
+ require 'afterpay/components/contact'
18
+ require 'afterpay/components/discount'
19
+ require 'afterpay/components/item'
20
+ require 'afterpay/components/merchant'
21
+ require 'afterpay/components/money'
22
+ require 'afterpay/components/order'
23
+ require 'afterpay/components/payment_event'
24
+ require 'afterpay/components/payment'
25
+ require 'afterpay/components/refund'
26
+ require 'afterpay/components/courier'
27
+
28
+ module Afterpay
29
+ class << self
30
+ # @!attribute merchant_id
31
+ # @return [String] Afterpay merchant ID that is used for authorization
32
+ attr_accessor :merchant_id
33
+
34
+ # @!attribute secret_key
35
+ # @return [String] Afterpay secret key that is used for authorization
36
+ attr_accessor :secret_key
37
+
38
+ # @!attribute server
39
+ attr_writer :server
40
+
41
+ # @!attribute user_agent
42
+ # @return [String] A User-Agent header must be supplied with all Merchant API requests prior to placing any live transactions.
43
+ # Create your User-Agent string here... https://developers.afterpay.com/afterpay-online/docs/user-agent-header-1
44
+ attr_accessor :user_agent
45
+
46
+ # @yield [self] to accept configuration settings
47
+ def configure
48
+ yield self
49
+ end
50
+
51
+ # @return [Hash] current Afterpay configuration
52
+ def configuration
53
+ {
54
+ merchant_id: @merchant_id,
55
+ secret_key: @secret_key
56
+ }
57
+ end
58
+
59
+ # @return [String] Afterpay server to which requests sended
60
+ def server
61
+ @server || DEFAULT_SERVER
62
+ end
63
+ end
64
+
65
+ DEFAULT_SERVER = 'https://api.us.afterpay.com/'
66
+ end
metadata ADDED
@@ -0,0 +1,311 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: afterpay
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Sergey Vygovsky
8
+ - Yuriy Kushnir
9
+ - Christian Rimondi
10
+ - Jordy Garcia
11
+ autorequire:
12
+ bindir: exe
13
+ cert_chain: []
14
+ date: 2021-08-30 00:00:00.000000000 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: faraday
18
+ requirement: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - "~>"
21
+ - !ruby/object:Gem::Version
22
+ version: '0.15'
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: 0.15.3
26
+ type: :runtime
27
+ prerelease: false
28
+ version_requirements: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '0.15'
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: 0.15.3
36
+ - !ruby/object:Gem::Dependency
37
+ name: faraday_middleware
38
+ requirement: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '0.12'
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: 0.12.2
46
+ type: :runtime
47
+ prerelease: false
48
+ version_requirements: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: '0.12'
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: 0.12.2
56
+ - !ruby/object:Gem::Dependency
57
+ name: hashie
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 3.6.0
63
+ - - "~>"
64
+ - !ruby/object:Gem::Version
65
+ version: '3.6'
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 3.6.0
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.6'
76
+ - !ruby/object:Gem::Dependency
77
+ name: bundler
78
+ requirement: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 2.2.22
83
+ type: :development
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 2.2.22
90
+ - !ruby/object:Gem::Dependency
91
+ name: codecov
92
+ requirement: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.5.2
97
+ type: :development
98
+ prerelease: false
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 0.5.2
104
+ - !ruby/object:Gem::Dependency
105
+ name: factory_bot
106
+ requirement: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 4.11.1
111
+ type: :development
112
+ prerelease: false
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 4.11.1
118
+ - !ruby/object:Gem::Dependency
119
+ name: faker
120
+ requirement: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 1.9.1
125
+ type: :development
126
+ prerelease: false
127
+ version_requirements: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 1.9.1
132
+ - !ruby/object:Gem::Dependency
133
+ name: rake
134
+ requirement: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '10.0'
139
+ type: :development
140
+ prerelease: false
141
+ version_requirements: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '10.0'
146
+ - !ruby/object:Gem::Dependency
147
+ name: relaxed-rubocop
148
+ requirement: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '2.5'
153
+ type: :development
154
+ prerelease: false
155
+ version_requirements: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '2.5'
160
+ - !ruby/object:Gem::Dependency
161
+ name: rspec
162
+ requirement: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '3.0'
167
+ type: :development
168
+ prerelease: false
169
+ version_requirements: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '3.0'
174
+ - !ruby/object:Gem::Dependency
175
+ name: rspec_junit_formatter
176
+ requirement: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: 0.4.1
181
+ type: :development
182
+ prerelease: false
183
+ version_requirements: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: 0.4.1
188
+ - !ruby/object:Gem::Dependency
189
+ name: rubocop
190
+ requirement: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: '1.18'
195
+ - - ">="
196
+ - !ruby/object:Gem::Version
197
+ version: 1.18.4
198
+ type: :development
199
+ prerelease: false
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ requirements:
202
+ - - "~>"
203
+ - !ruby/object:Gem::Version
204
+ version: '1.18'
205
+ - - ">="
206
+ - !ruby/object:Gem::Version
207
+ version: 1.18.4
208
+ - !ruby/object:Gem::Dependency
209
+ name: simplecov
210
+ requirement: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: 0.21.2
215
+ type: :development
216
+ prerelease: false
217
+ version_requirements: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - "~>"
220
+ - !ruby/object:Gem::Version
221
+ version: 0.21.2
222
+ - !ruby/object:Gem::Dependency
223
+ name: webmock
224
+ requirement: !ruby/object:Gem::Requirement
225
+ requirements:
226
+ - - "~>"
227
+ - !ruby/object:Gem::Version
228
+ version: '2.1'
229
+ type: :development
230
+ prerelease: false
231
+ version_requirements: !ruby/object:Gem::Requirement
232
+ requirements:
233
+ - - "~>"
234
+ - !ruby/object:Gem::Version
235
+ version: '2.1'
236
+ description: Provides Ruby SDK for AfterPay payment service provider.
237
+ email: contact@solidus.io
238
+ executables: []
239
+ extensions: []
240
+ extra_rdoc_files: []
241
+ files:
242
+ - ".circleci/config.yml"
243
+ - ".gitignore"
244
+ - ".rspec"
245
+ - ".rubocop.yml"
246
+ - ".travis.yml"
247
+ - Gemfile
248
+ - LICENSE
249
+ - README.md
250
+ - Rakefile
251
+ - afterpay.gemspec
252
+ - bin/console
253
+ - bin/setup
254
+ - lib/afterpay.rb
255
+ - lib/afterpay/api/base.rb
256
+ - lib/afterpay/api/configuration.rb
257
+ - lib/afterpay/api/configuration/retrieve.rb
258
+ - lib/afterpay/api/order.rb
259
+ - lib/afterpay/api/order/create.rb
260
+ - lib/afterpay/api/payment.rb
261
+ - lib/afterpay/api/payment/auth.rb
262
+ - lib/afterpay/api/payment/capture.rb
263
+ - lib/afterpay/api/payment/deferred_capture.rb
264
+ - lib/afterpay/api/payment/find.rb
265
+ - lib/afterpay/api/payment/refund.rb
266
+ - lib/afterpay/api/payment/void.rb
267
+ - lib/afterpay/callable.rb
268
+ - lib/afterpay/components/base.rb
269
+ - lib/afterpay/components/consumer.rb
270
+ - lib/afterpay/components/contact.rb
271
+ - lib/afterpay/components/courier.rb
272
+ - lib/afterpay/components/discount.rb
273
+ - lib/afterpay/components/item.rb
274
+ - lib/afterpay/components/merchant.rb
275
+ - lib/afterpay/components/money.rb
276
+ - lib/afterpay/components/order.rb
277
+ - lib/afterpay/components/payment.rb
278
+ - lib/afterpay/components/payment_event.rb
279
+ - lib/afterpay/components/refund.rb
280
+ - lib/afterpay/error_handler.rb
281
+ - lib/afterpay/errors.rb
282
+ - lib/afterpay/http_service.rb
283
+ - lib/afterpay/http_service/request.rb
284
+ - lib/afterpay/http_service/response.rb
285
+ - lib/afterpay/initializable.rb
286
+ - lib/afterpay/representable.rb
287
+ - lib/afterpay/version.rb
288
+ homepage: http://solidus.io
289
+ licenses:
290
+ - Apache-2.0
291
+ metadata: {}
292
+ post_install_message:
293
+ rdoc_options: []
294
+ require_paths:
295
+ - lib
296
+ required_ruby_version: !ruby/object:Gem::Requirement
297
+ requirements:
298
+ - - ">="
299
+ - !ruby/object:Gem::Version
300
+ version: '2.5'
301
+ required_rubygems_version: !ruby/object:Gem::Requirement
302
+ requirements:
303
+ - - ">="
304
+ - !ruby/object:Gem::Version
305
+ version: '0'
306
+ requirements: []
307
+ rubygems_version: 3.0.3
308
+ signing_key:
309
+ specification_version: 4
310
+ summary: Provides Ruby SDK for AfterPay payment service provider.
311
+ test_files: []