quickpay-ruby-client 2.0.3 → 3.0.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.
- checksums.yaml +4 -4
- data/.travis.yml +3 -2
- data/CHANGELOG.md +54 -1
- data/README.md +78 -28
- data/Rakefile +22 -12
- data/bin/console +12 -0
- data/lib/quickpay/api/client.rb +36 -16
- data/lib/quickpay/api/error.rb +33 -20
- data/lib/quickpay/api/version.rb +1 -1
- data/quickpay-ruby-client.gemspec +9 -5
- metadata +51 -24
- data/.rubocop.yml +0 -92
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 47a7b8b3bec59cf6276448d2e8eb29149288518b12d0df8e377fc10783bb6090
|
4
|
+
data.tar.gz: d80a3b9b3deda68bea662dd67a5937ea724a7aa58d44ec7fde61c74c588b9e43
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cadad5ea2172320dd9133e6e8534d08cc1475d1b3d8d66839686eebaeba74000e0b162f8332b118cc21794299970a3c938b199f85ceff6a5b44c37405164ffaa
|
7
|
+
data.tar.gz: c46b7f639b9f9359c53206a02583c5c593535601541cd8a75861666b943db5a629edfb7df58d6b25615450758b8ffa461bcb668a002b7022e511f7f2acd85ede
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,59 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
##
|
3
|
+
## 3.0.0
|
4
|
+
|
5
|
+
### Breaking changes
|
6
|
+
|
7
|
+
The interface has been changed to (https://github.com/QuickPay/quickpay-ruby-client/pull/36):
|
8
|
+
|
9
|
+
- always return an array for all request types (incl. when adding the `raw: true` option)
|
10
|
+
- order the array as `[body, status, headers]` (was `[status, body, headers]`
|
11
|
+
- always parse JSON body unless the `raw: true` option is set
|
12
|
+
|
13
|
+
The reasoning is that we almost always want the `body`, but in some case we want `status`and/or `headers` as well. Before we had to set the `raw: true` option, but then a JSON body would not be parsed.
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
body, = client.get("/ping")
|
17
|
+
body, status, = client.get("/ping")
|
18
|
+
body, status, headers = client.get("/ping")
|
19
|
+
body, status, headers = client.get("/ping", raw: true)
|
20
|
+
```
|
21
|
+
|
22
|
+
### New features
|
23
|
+
|
24
|
+
#### Blocks
|
25
|
+
|
26
|
+
You can now pass a block to a request (https://github.com/QuickPay/quickpay-ruby-client/pull/32):
|
27
|
+
|
28
|
+
```ruby
|
29
|
+
msg = client.get("/ping") do |body, status, headers, error|
|
30
|
+
case error
|
31
|
+
when nil
|
32
|
+
body["msg"]
|
33
|
+
when QuickPay::API::NotFound
|
34
|
+
nil
|
35
|
+
else
|
36
|
+
raise error
|
37
|
+
end
|
38
|
+
end
|
39
|
+
```
|
40
|
+
|
41
|
+
#### Verbose errors
|
42
|
+
|
43
|
+
The `QuickPay::API::Error` now includes the request that yielded the error - for example:
|
44
|
+
|
45
|
+
```
|
46
|
+
#<QuickPay::API::Error::NotFound:
|
47
|
+
status=404,
|
48
|
+
body="404 Not Found",
|
49
|
+
headers={"Server"=>"nginx", "Date"=>"Sun, 21 Mar 2021 09:10:12 GMT", "Connection"=>"keep-alive", "X-Cascade"=>"pass", "Vary"=>"Origin"}
|
50
|
+
request=#<struct QuickPay::API::Client::Request
|
51
|
+
method=:post,
|
52
|
+
path="/payments",
|
53
|
+
body="{\"currency\":\"DKK\",\"order_id\":\"1212\"}",
|
54
|
+
headers={"User-Agent"=>"quickpay-ruby-client, v2.0.3", "Accept-Version"=>"v10", "Content-Type"=>"application/json"},
|
55
|
+
query=nil>>
|
56
|
+
```
|
4
57
|
|
5
58
|
## v2.0.3
|
6
59
|
|
data/README.md
CHANGED
@@ -19,8 +19,8 @@ or install from Rubygems:
|
|
19
19
|
```
|
20
20
|
$ gem install quickpay-ruby-client
|
21
21
|
```
|
22
|
-
|
23
|
-
It is currently tested with Ruby ( >= 2.
|
22
|
+
|
23
|
+
It is currently tested with Ruby ( >= 2.5.x)
|
24
24
|
|
25
25
|
* MRI
|
26
26
|
* Rubinius (2.0)
|
@@ -31,7 +31,7 @@ Before doing anything you should register yourself with QuickPay and get access
|
|
31
31
|
|
32
32
|
### Create a new API client
|
33
33
|
|
34
|
-
First you should create a client instance that is anonymous or authorized with your API key or login credentials provided by QuickPay.
|
34
|
+
First you should create a client instance that is anonymous or authorized with your API key or login credentials provided by QuickPay.
|
35
35
|
|
36
36
|
To initialise an anonymous client:
|
37
37
|
|
@@ -57,26 +57,74 @@ client = QuickPay::API::Client.new(username: ENV["QUICKPAY_LOGIN"], password: EN
|
|
57
57
|
You can also set some connection specific options (default values shown):
|
58
58
|
|
59
59
|
```ruby
|
60
|
-
client =
|
60
|
+
client = QuickPay::API::Client.new(
|
61
61
|
options: {
|
62
62
|
read_timeout: 60,
|
63
63
|
write_timeout: 60,
|
64
64
|
connect_timeout: 60,
|
65
|
-
json_opts: { symbolize_names:
|
65
|
+
json_opts: { symbolize_names: false }
|
66
66
|
}
|
67
|
-
)
|
67
|
+
)
|
68
68
|
```
|
69
69
|
|
70
70
|
### Sending request
|
71
71
|
|
72
72
|
You can afterwards call any method described in QuickPay API with corresponding http method and endpoint. These methods are supported currently: `get`, `post`, `put`, `patch`, `delete` and `head`.
|
73
73
|
|
74
|
+
Any request will return an array in the form `[body, status, headers]`:
|
75
|
+
|
76
|
+
```ruby
|
77
|
+
# Shortest form when interested in the response body only
|
78
|
+
body, = client.get("/ping")
|
79
|
+
puts body.inspect
|
80
|
+
|
81
|
+
# Get all response information
|
82
|
+
body, status, headers = client.get("/ping")
|
83
|
+
puts body.inspect, status.inspect, headers.inspect
|
84
|
+
|
85
|
+
```
|
86
|
+
|
87
|
+
You can also do requests in block form:
|
88
|
+
|
89
|
+
```ruby
|
90
|
+
client.get("/ping") do |body, status, headers|
|
91
|
+
puts body.inspect
|
92
|
+
end
|
93
|
+
```
|
94
|
+
|
95
|
+
It is even possible to pass the `QuickPay::API::Error` to the block as the 4th parameter to be able to handle the errors that _would_ have otherwise been raised. This parameter is nil when the response is a success.
|
96
|
+
|
74
97
|
```ruby
|
75
|
-
|
76
|
-
|
98
|
+
# the error is not raised but passed to the block as the fourth parameter
|
99
|
+
client.get("/ping") do |body, status, headers, error|
|
100
|
+
case error
|
101
|
+
when nil
|
102
|
+
body[:id]
|
103
|
+
when QuickPay::API::NotFound
|
104
|
+
nil
|
105
|
+
else
|
106
|
+
raise error
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
# will raise `QuickPay::API::Error::NotFound` since the fourth block param is not defined
|
111
|
+
client.get("/non-existing-path") do |body, status, headers| do
|
77
112
|
end
|
78
113
|
```
|
79
114
|
|
115
|
+
If you want raw http response body, you can add `:raw => true` parameter:
|
116
|
+
|
117
|
+
```ruby
|
118
|
+
body, status, headers = client.get("/ping", raw: true)
|
119
|
+
|
120
|
+
if status == 200
|
121
|
+
puts JSON.parse(body).inspect
|
122
|
+
else
|
123
|
+
# do something else
|
124
|
+
end
|
125
|
+
|
126
|
+
```
|
127
|
+
|
80
128
|
Beyond the endpoint, the client accepts the following options (default values shown):
|
81
129
|
|
82
130
|
* `body: ""`
|
@@ -85,8 +133,10 @@ Beyond the endpoint, the client accepts the following options (default values sh
|
|
85
133
|
* `raw: false`
|
86
134
|
* `json_opts: nil`
|
87
135
|
|
136
|
+
Full example:
|
137
|
+
|
88
138
|
```ruby
|
89
|
-
response = client.post(
|
139
|
+
response, = client.post(
|
90
140
|
"/payments/1/capture",
|
91
141
|
body: { amount: 100 }.to_json,
|
92
142
|
headers: { "Content-Type" => "application/json" },
|
@@ -97,21 +147,6 @@ response = client.post(
|
|
97
147
|
|
98
148
|
```
|
99
149
|
|
100
|
-
If you want raw http response, headers Please add `:raw => true` parameter:
|
101
|
-
|
102
|
-
```ruby
|
103
|
-
status, body, headers = client.get("/activity", raw: true)
|
104
|
-
|
105
|
-
if status == 200
|
106
|
-
JSON.parse(body).each do |activity|
|
107
|
-
puts activity["id"]
|
108
|
-
end
|
109
|
-
else
|
110
|
-
# do something else
|
111
|
-
end
|
112
|
-
|
113
|
-
```
|
114
|
-
|
115
150
|
### Handling API exceptions
|
116
151
|
|
117
152
|
By default `(get|post|patch|put|delete)` will return JSON parsed body on success (i.e. `2xx` response code) otherwise it will raise appropriate error. Your code should handle the errors appropriately. Following error codes are supported currently:
|
@@ -120,7 +155,7 @@ By default `(get|post|patch|put|delete)` will return JSON parsed body on success
|
|
120
155
|
Response status | Error |
|
121
156
|
----------------| ----------|
|
122
157
|
`400` | `QuickPay::API::BadRequest`
|
123
|
-
`401` | `QuickPay::API::Unauthorized`
|
158
|
+
`401` | `QuickPay::API::Unauthorized`
|
124
159
|
`402` | `QuickPay::API::PaymentRequired`
|
125
160
|
`403` | `QuickPay::API::Forbidden`
|
126
161
|
`404` | `QuickPay::API::NotFound`
|
@@ -136,12 +171,27 @@ All exceptions inherits `QuickPay::API::Error`, so you can listen for any api er
|
|
136
171
|
|
137
172
|
```ruby
|
138
173
|
begin
|
139
|
-
client.post("/payments", body: { currency: "DKK", order_id: "1212" })
|
174
|
+
client.post("/payments", body: { currency: "DKK", order_id: "1212" }, headers: { "Content-Type" => "application/json" })
|
140
175
|
rescue QuickPay::API::Error => e
|
141
|
-
puts e.
|
176
|
+
puts e.inspect
|
142
177
|
end
|
143
178
|
```
|
144
179
|
|
180
|
+
Example error object:
|
181
|
+
|
182
|
+
```
|
183
|
+
#<QuickPay::API::Error::NotFound:
|
184
|
+
status=404,
|
185
|
+
body="404 Not Found",
|
186
|
+
headers={"Server"=>"nginx", "Date"=>"Sun, 21 Mar 2021 09:10:12 GMT", "Connection"=>"keep-alive", "X-Cascade"=>"pass", "Vary"=>"Origin"}
|
187
|
+
request=#<struct QuickPay::API::Client::Request
|
188
|
+
method=:post,
|
189
|
+
path="/payments",
|
190
|
+
body="{\"currency\":\"DKK\",\"order_id\":\"1212\"}",
|
191
|
+
headers={"User-Agent"=>"quickpay-ruby-client, v2.0.3", "Accept-Version"=>"v10", "Content-Type"=>"application/json"},
|
192
|
+
query=nil>>
|
193
|
+
```
|
194
|
+
|
145
195
|
You can read more about QuickPay API responses at [https://learn.quickpay.net/tech-talk/api](https://learn.quickpay.net/tech-talk/api).
|
146
196
|
|
147
197
|
## Contributions
|
@@ -157,5 +207,5 @@ To contribute:
|
|
157
207
|
### Running the specs
|
158
208
|
|
159
209
|
```
|
160
|
-
$ bundle exec
|
210
|
+
$ bundle exec rake test
|
161
211
|
```
|
data/Rakefile
CHANGED
@@ -2,22 +2,32 @@ require "bundler/gem_tasks"
|
|
2
2
|
require "rake/testtask"
|
3
3
|
require "rubocop/rake_task"
|
4
4
|
|
5
|
-
|
5
|
+
task default: :test
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
desc "Open an irb/pry session"
|
8
|
+
task :console do
|
9
|
+
exec "bin/console"
|
9
10
|
end
|
10
11
|
|
11
|
-
|
12
|
-
|
12
|
+
namespace :test do
|
13
|
+
RuboCop::RakeTask.new
|
13
14
|
|
14
|
-
|
15
|
-
|
16
|
-
Rake::TestTask.new(t.name) do |tt|
|
17
|
-
tt.libs << "."
|
18
|
-
tt.test_files = Dir.glob("test/*.rb")
|
19
|
-
tt.warning = false
|
15
|
+
task :opts do
|
16
|
+
ENV["TESTOPTS"] = "--verbose"
|
20
17
|
end
|
18
|
+
|
19
|
+
desc "Run tests"
|
20
|
+
task :specs do |t|
|
21
|
+
Rake::TestTask.new(t.name) do |tt|
|
22
|
+
tt.libs << "."
|
23
|
+
tt.test_files = Dir.glob("test/*.rb")
|
24
|
+
tt.warning = false
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
desc "Run tests with verbose output"
|
29
|
+
task verbose: %i[opts test]
|
21
30
|
end
|
22
31
|
|
23
|
-
|
32
|
+
desc "Run test suite"
|
33
|
+
task test: ["test:specs", "test:rubocop"]
|
data/bin/console
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
ENV["APP_KIND"] = "console"
|
3
|
+
APP_ROOT = File.realdirpath(File.expand_path("..", __dir__))
|
4
|
+
$LOAD_PATH.unshift(APP_ROOT)
|
5
|
+
|
6
|
+
require "irb"
|
7
|
+
require "lib/quickpay/api/client"
|
8
|
+
|
9
|
+
CLIENT = QuickPay::API::Client.new
|
10
|
+
|
11
|
+
ARGV.clear
|
12
|
+
IRB.start
|
data/lib/quickpay/api/client.rb
CHANGED
@@ -11,6 +11,8 @@ module QuickPay
|
|
11
11
|
"Accept-Version" => "v10"
|
12
12
|
}.freeze
|
13
13
|
|
14
|
+
Request = Struct.new(:method, :path, :body, :headers, :query) # rubocop:disable Lint/StructNewOverride
|
15
|
+
|
14
16
|
def initialize(username: nil, password: nil, base_uri: "https://api.quickpay.net", options: {})
|
15
17
|
opts = {
|
16
18
|
read_timeout: options.fetch(:read_timeout, 60),
|
@@ -26,7 +28,7 @@ module QuickPay
|
|
26
28
|
end
|
27
29
|
|
28
30
|
%i[get post patch put delete head].each do |method|
|
29
|
-
define_method(method) do |path, options
|
31
|
+
define_method(method) do |path, **options, &block|
|
30
32
|
headers = DEFAULT_HEADERS.merge(options.fetch(:headers, {}))
|
31
33
|
body = begin
|
32
34
|
data = options.fetch(:body, "")
|
@@ -37,27 +39,45 @@ module QuickPay
|
|
37
39
|
end
|
38
40
|
end
|
39
41
|
|
40
|
-
|
41
|
-
method
|
42
|
-
path
|
43
|
-
body
|
44
|
-
headers
|
45
|
-
|
46
|
-
)
|
42
|
+
req = Request.new(
|
43
|
+
method,
|
44
|
+
path,
|
45
|
+
scrub_body(body.dup, headers["Content-Type"]),
|
46
|
+
headers,
|
47
|
+
options.fetch(:query, {})
|
48
|
+
).freeze
|
49
|
+
|
50
|
+
res = @connection.request(**req.to_h)
|
51
|
+
error = QuickPay::API::Error.by_status_code(res.status, res.body, res.headers, req)
|
52
|
+
|
53
|
+
if !options.fetch(:raw, false) && res.headers["Content-Type"] =~ %r{application/json}
|
54
|
+
res.body = JSON.parse(res.body, options[:json_opts] || @connection.data[:json_opts])
|
55
|
+
end
|
56
|
+
|
57
|
+
if block
|
58
|
+
# Raise error if not specified as fourth block parameter
|
59
|
+
raise error if error && block.parameters.size < 4
|
47
60
|
|
48
|
-
|
49
|
-
[res.status, res.body, res.headers]
|
61
|
+
block.call(res.body, res.status, res.headers, error)
|
50
62
|
else
|
51
|
-
raise
|
63
|
+
raise error if error
|
52
64
|
|
53
|
-
|
54
|
-
JSON.parse(res.body, options.dig(:json_opts) || @connection.data.dig(:json_opts))
|
55
|
-
else
|
56
|
-
res.body
|
57
|
-
end
|
65
|
+
[res.body, res.status, res.headers]
|
58
66
|
end
|
59
67
|
end
|
60
68
|
end
|
69
|
+
|
70
|
+
private
|
71
|
+
|
72
|
+
def scrub_body(body, content_type)
|
73
|
+
return "" if body.to_s.empty?
|
74
|
+
|
75
|
+
if ["application/json", "application/x-www-form-urlencoded"].include?(content_type)
|
76
|
+
body
|
77
|
+
else
|
78
|
+
"<scrubbed for Content-Type #{content_type}>"
|
79
|
+
end
|
80
|
+
end
|
61
81
|
end
|
62
82
|
end
|
63
83
|
end
|
data/lib/quickpay/api/error.rb
CHANGED
@@ -2,53 +2,66 @@ module QuickPay
|
|
2
2
|
module API
|
3
3
|
class Error < StandardError
|
4
4
|
class BadRequest < Error; end
|
5
|
+
|
5
6
|
class Unauthorized < Error; end
|
7
|
+
|
6
8
|
class PaymentRequired < Error; end
|
9
|
+
|
7
10
|
class Forbidden < Error; end
|
11
|
+
|
8
12
|
class NotFound < Error; end
|
13
|
+
|
9
14
|
class MethodNotAllowed < Error; end
|
15
|
+
|
10
16
|
class NotAcceptable < Error; end
|
17
|
+
|
11
18
|
class Conflict < Error; end
|
19
|
+
|
12
20
|
class TooManyRequest < Error; end
|
21
|
+
|
13
22
|
class InternalServerError < Error; end
|
23
|
+
|
14
24
|
class BadGateway < Error; end
|
25
|
+
|
15
26
|
class ServiceUnavailable < Error; end
|
27
|
+
|
16
28
|
class GatewayTimeout < Error; end
|
17
29
|
|
18
30
|
CLASS_MAP = {
|
19
|
-
400 =>
|
20
|
-
401 =>
|
21
|
-
402 =>
|
22
|
-
403 =>
|
23
|
-
404 =>
|
24
|
-
405 =>
|
25
|
-
406 =>
|
26
|
-
409 =>
|
27
|
-
429 =>
|
28
|
-
500 =>
|
29
|
-
502 =>
|
30
|
-
503 =>
|
31
|
-
504 =>
|
31
|
+
400 => BadRequest,
|
32
|
+
401 => Unauthorized,
|
33
|
+
402 => PaymentRequired,
|
34
|
+
403 => Forbidden,
|
35
|
+
404 => NotFound,
|
36
|
+
405 => MethodNotAllowed,
|
37
|
+
406 => NotAcceptable,
|
38
|
+
409 => Conflict,
|
39
|
+
429 => TooManyRequest,
|
40
|
+
500 => InternalServerError,
|
41
|
+
502 => BadGateway,
|
42
|
+
503 => ServiceUnavailable,
|
43
|
+
504 => GatewayTimeout
|
32
44
|
}.freeze
|
33
45
|
|
34
|
-
attr_reader :status, :body, :headers
|
46
|
+
attr_reader :status, :body, :headers, :request
|
35
47
|
|
36
|
-
def initialize(status, body, headers)
|
48
|
+
def initialize(status, body, headers, request)
|
37
49
|
@status = status
|
38
50
|
@body = body
|
39
51
|
@headers = headers
|
52
|
+
@request = request
|
40
53
|
end
|
41
54
|
|
42
55
|
def to_s
|
43
|
-
"#<#{self.class}: status=#{status}, body=#{body.inspect},
|
56
|
+
"#<#{self.class}: status=#{status}, body=#{body.inspect}, " \
|
57
|
+
"headers=#{headers.inspect} request=#{request.inspect}>"
|
44
58
|
end
|
45
59
|
alias_method :inspect, :to_s
|
46
60
|
|
47
|
-
def self.by_status_code(status, body, headers)
|
48
|
-
|
61
|
+
def self.by_status_code(status, body, headers, request)
|
62
|
+
return if (200..399).cover? status
|
49
63
|
|
50
|
-
|
51
|
-
raise klass.new(status, body, headers)
|
64
|
+
CLASS_MAP.fetch(status, QuickPay::API::Error).new(status, body, headers, request)
|
52
65
|
end
|
53
66
|
end
|
54
67
|
end
|
data/lib/quickpay/api/version.rb
CHANGED
@@ -3,6 +3,8 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
3
|
require "quickpay/api/version"
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
|
+
spec.required_ruby_version = ">= 2.5.0" # rubocop:disable Gemspec/RequiredRubyVersion
|
7
|
+
|
6
8
|
spec.name = "quickpay-ruby-client"
|
7
9
|
spec.version = QuickPay::API::VERSION
|
8
10
|
spec.authors = ["QuickPay Developers"]
|
@@ -18,11 +20,13 @@ Gem::Specification.new do |spec|
|
|
18
20
|
spec.require_paths = ["lib"]
|
19
21
|
|
20
22
|
spec.add_development_dependency "bundler"
|
21
|
-
spec.add_development_dependency "minitest"
|
22
|
-
spec.add_development_dependency "
|
23
|
+
spec.add_development_dependency "minitest"
|
24
|
+
spec.add_development_dependency "pry"
|
25
|
+
spec.add_development_dependency "rake"
|
23
26
|
spec.add_development_dependency "rubocop"
|
24
|
-
spec.add_development_dependency "simplecov"
|
25
|
-
spec.add_development_dependency "simplecov-console"
|
27
|
+
spec.add_development_dependency "simplecov"
|
28
|
+
spec.add_development_dependency "simplecov-console"
|
26
29
|
|
27
|
-
spec.add_dependency "excon", "~> 0.
|
30
|
+
spec.add_dependency "excon", "~> 0.79.0"
|
31
|
+
spec.add_dependency "json", "~> 2.5.0"
|
28
32
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: quickpay-ruby-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- QuickPay Developers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -28,30 +28,44 @@ dependencies:
|
|
28
28
|
name: minitest
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pry
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rake
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
|
-
- - "
|
59
|
+
- - ">="
|
46
60
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
61
|
+
version: '0'
|
48
62
|
type: :development
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
|
-
- - "
|
66
|
+
- - ">="
|
53
67
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: rubocop
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -70,44 +84,58 @@ dependencies:
|
|
70
84
|
name: simplecov
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
|
-
- - "
|
87
|
+
- - ">="
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0
|
89
|
+
version: '0'
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
|
-
- - "
|
94
|
+
- - ">="
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0
|
96
|
+
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: simplecov-console
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
86
100
|
requirements:
|
87
|
-
- - "
|
101
|
+
- - ">="
|
88
102
|
- !ruby/object:Gem::Version
|
89
|
-
version: 0
|
103
|
+
version: '0'
|
90
104
|
type: :development
|
91
105
|
prerelease: false
|
92
106
|
version_requirements: !ruby/object:Gem::Requirement
|
93
107
|
requirements:
|
94
|
-
- - "
|
108
|
+
- - ">="
|
95
109
|
- !ruby/object:Gem::Version
|
96
|
-
version: 0
|
110
|
+
version: '0'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: excon
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
100
114
|
requirements:
|
101
115
|
- - "~>"
|
102
116
|
- !ruby/object:Gem::Version
|
103
|
-
version: 0.
|
117
|
+
version: 0.79.0
|
104
118
|
type: :runtime
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
107
121
|
requirements:
|
108
122
|
- - "~>"
|
109
123
|
- !ruby/object:Gem::Version
|
110
|
-
version: 0.
|
124
|
+
version: 0.79.0
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: json
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 2.5.0
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: 2.5.0
|
111
139
|
description: Embed QuickPay's secure payments directly into your Ruby applications.
|
112
140
|
Learn more at https://tech.quickpay.net
|
113
141
|
email:
|
@@ -117,13 +145,13 @@ extensions: []
|
|
117
145
|
extra_rdoc_files: []
|
118
146
|
files:
|
119
147
|
- ".gitignore"
|
120
|
-
- ".rubocop.yml"
|
121
148
|
- ".travis.yml"
|
122
149
|
- CHANGELOG.md
|
123
150
|
- Gemfile
|
124
151
|
- LICENSE.txt
|
125
152
|
- README.md
|
126
153
|
- Rakefile
|
154
|
+
- bin/console
|
127
155
|
- lib/quickpay/api/client.rb
|
128
156
|
- lib/quickpay/api/error.rb
|
129
157
|
- lib/quickpay/api/version.rb
|
@@ -140,15 +168,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
140
168
|
requirements:
|
141
169
|
- - ">="
|
142
170
|
- !ruby/object:Gem::Version
|
143
|
-
version:
|
171
|
+
version: 2.5.0
|
144
172
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
145
173
|
requirements:
|
146
174
|
- - ">="
|
147
175
|
- !ruby/object:Gem::Version
|
148
176
|
version: '0'
|
149
177
|
requirements: []
|
150
|
-
|
151
|
-
rubygems_version: 2.7.6
|
178
|
+
rubygems_version: 3.1.2
|
152
179
|
signing_key:
|
153
180
|
specification_version: 4
|
154
181
|
summary: Ruby client for QuickPay API
|
data/.rubocop.yml
DELETED
@@ -1,92 +0,0 @@
|
|
1
|
-
###########################
|
2
|
-
# Configuration for rubocop
|
3
|
-
# in .rubocop.yml
|
4
|
-
# Most of these are disabling existing cops, primarily
|
5
|
-
# due to a smattering of different styles and loose
|
6
|
-
# guidlines for contributions.
|
7
|
-
#
|
8
|
-
# Any of these may be changed.
|
9
|
-
AllCops:
|
10
|
-
TargetRubyVersion: 2.5
|
11
|
-
|
12
|
-
Style/StringLiterals:
|
13
|
-
EnforcedStyle: double_quotes
|
14
|
-
|
15
|
-
Style/StringLiteralsInInterpolation:
|
16
|
-
EnforcedStyle: double_quotes
|
17
|
-
|
18
|
-
Style/Alias:
|
19
|
-
EnforcedStyle: prefer_alias_method
|
20
|
-
|
21
|
-
Style/DoubleNegation:
|
22
|
-
Enabled: false
|
23
|
-
|
24
|
-
Style/NumericLiterals:
|
25
|
-
Enabled: false
|
26
|
-
|
27
|
-
Style/SingleLineBlockParams:
|
28
|
-
Enabled: false
|
29
|
-
|
30
|
-
Style/MethodMissingSuper:
|
31
|
-
Enabled: false
|
32
|
-
|
33
|
-
Style/MissingRespondToMissing:
|
34
|
-
Enabled: false
|
35
|
-
|
36
|
-
Style/EmptyMethod:
|
37
|
-
EnforcedStyle: expanded
|
38
|
-
|
39
|
-
Naming/VariableNumber:
|
40
|
-
Enabled: false
|
41
|
-
|
42
|
-
Naming/AccessorMethodName:
|
43
|
-
Enabled: false
|
44
|
-
|
45
|
-
Style/HashSyntax:
|
46
|
-
EnforcedStyle: no_mixed_keys
|
47
|
-
|
48
|
-
Style/FrozenStringLiteralComment:
|
49
|
-
Enabled: false
|
50
|
-
|
51
|
-
Style/NumericPredicate:
|
52
|
-
Enabled: false
|
53
|
-
|
54
|
-
LineLength:
|
55
|
-
Max: 119 # github diff (ex. +-)
|
56
|
-
|
57
|
-
Documentation:
|
58
|
-
Enabled: false
|
59
|
-
|
60
|
-
Metrics/ClassLength:
|
61
|
-
CountComments: false
|
62
|
-
Exclude:
|
63
|
-
- "**/spec/**/*"
|
64
|
-
|
65
|
-
Metrics/ModuleLength:
|
66
|
-
CountComments: false
|
67
|
-
Exclude:
|
68
|
-
- "**/spec/**/*"
|
69
|
-
|
70
|
-
Metrics/MethodLength:
|
71
|
-
Enabled: false
|
72
|
-
|
73
|
-
Metrics/BlockLength:
|
74
|
-
Enabled: false
|
75
|
-
|
76
|
-
Metrics/AbcSize:
|
77
|
-
Enabled: false
|
78
|
-
|
79
|
-
Metrics/CyclomaticComplexity:
|
80
|
-
Enabled: false
|
81
|
-
|
82
|
-
Metrics/PerceivedComplexity:
|
83
|
-
Enabled: false
|
84
|
-
|
85
|
-
Metrics/ParameterLists:
|
86
|
-
Enabled: false
|
87
|
-
|
88
|
-
FrozenStringLiteralComment:
|
89
|
-
Enabled: false
|
90
|
-
|
91
|
-
Style/RedundantCondition: # Double pipes(||) on multiline is not so clear.
|
92
|
-
Enabled: false
|