mangopay 3.19.0 → 3.20.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/CHANGELOG.md +23 -0
- data/README.md +19 -0
- data/lib/mangopay/version.rb +1 -1
- data/lib/mangopay.rb +33 -0
- data/spec/mangopay/configuration_spec.rb +68 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c22a75f6a785d55c368cc565e3d9b2dc399c5b08cb8b4b8ed27f24762ee9b6a2
|
4
|
+
data.tar.gz: 7b1b066c802f7716aa500267349928ed05d7df7ac9be74e63855376c284e2c03
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 51efb4cb9942a749604b7f44e0fb79958b862ab03a0aa742c70af9bc650001aff7b339d43e56011392556e2e38572343c19a243e5218e09b24d4960346d3c10c
|
7
|
+
data.tar.gz: 1b8d01d73103c23d7e999e6c4e49ae2d57f5161ecb20626be0465d581de3e4c606b38549c4bde0fc4e4b2d27d4a7684c6cd1566b949f32463bf52ace34b309cf
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,26 @@
|
|
1
|
+
## [3.20.0] - 2023-11-15
|
2
|
+
### Added
|
3
|
+
|
4
|
+
Now, our SDK enables seamless integration with multiple clientIDs, offering enhanced flexibility and customization.
|
5
|
+
|
6
|
+
You can effortlessly create multiple configuration objects tailored to your specific needs:
|
7
|
+
|
8
|
+
```
|
9
|
+
config = MangoPay::Configuration.new
|
10
|
+
config.client_id = 'your-client-id'
|
11
|
+
config.client_apiKey = 'your-api-key'
|
12
|
+
config.preproduction = true
|
13
|
+
```
|
14
|
+
add them using :
|
15
|
+
|
16
|
+
`MangoPay.add_config('config1', config)`
|
17
|
+
|
18
|
+
and perform a call with them using :
|
19
|
+
|
20
|
+
`MangoPay.get_config('config1').apply_configuration`
|
21
|
+
|
22
|
+
The previous method configure() is still working.
|
23
|
+
|
1
24
|
## [3.19.0] - 2023-11-02
|
2
25
|
### Updated
|
3
26
|
|
data/README.md
CHANGED
@@ -85,6 +85,25 @@ rescue MangoPay::ResponseError => ex
|
|
85
85
|
end
|
86
86
|
```
|
87
87
|
|
88
|
+
### Using multiple clientIDs
|
89
|
+
You can effortlessly create multiple configuration objects tailored to your specific needs:
|
90
|
+
|
91
|
+
```
|
92
|
+
config = MangoPay::Configuration.new
|
93
|
+
config.client_id = 'your-client-id'
|
94
|
+
config.client_apiKey = 'your-api-key'
|
95
|
+
config.preproduction = true
|
96
|
+
```
|
97
|
+
add them using :
|
98
|
+
|
99
|
+
`MangoPay.add_config('config1', config)`
|
100
|
+
|
101
|
+
and perform a call with them using :
|
102
|
+
|
103
|
+
`MangoPay.get_config('config1').apply_configuration`
|
104
|
+
|
105
|
+
The previous method configure() is still working.
|
106
|
+
|
88
107
|
### Accessing RateLimit Headers
|
89
108
|
Along with each request, the rate limiting headers are automatically updated in MangoPay object:
|
90
109
|
|
data/lib/mangopay/version.rb
CHANGED
data/lib/mangopay.rb
CHANGED
@@ -49,6 +49,8 @@ module MangoPay
|
|
49
49
|
# temporary
|
50
50
|
autoload :Temp, 'mangopay/temp'
|
51
51
|
|
52
|
+
@configurations = {}
|
53
|
+
|
52
54
|
class Configuration
|
53
55
|
attr_accessor :preproduction, :root_url,
|
54
56
|
:client_id, :client_apiKey,
|
@@ -56,6 +58,20 @@ module MangoPay
|
|
56
58
|
:http_max_retries, :http_open_timeout,
|
57
59
|
:logger, :use_ssl
|
58
60
|
|
61
|
+
def apply_configuration
|
62
|
+
MangoPay.configure do |config|
|
63
|
+
config.preproduction = @preproduction
|
64
|
+
config.client_id = @client_id
|
65
|
+
config.client_apiKey = @client_apiKey
|
66
|
+
config.log_file = @log_file
|
67
|
+
config.http_timeout = @http_timeout
|
68
|
+
config.http_max_retries = @http_max_retries
|
69
|
+
config.http_open_timeout = @http_open_timeout
|
70
|
+
config.use_ssl = @use_ssl
|
71
|
+
config.logger = @logger
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
59
75
|
def preproduction
|
60
76
|
@preproduction || false
|
61
77
|
end
|
@@ -138,6 +154,23 @@ module MangoPay
|
|
138
154
|
@ratelimit = obj
|
139
155
|
end
|
140
156
|
|
157
|
+
# Add MangoPay.Configuration to the list of configs
|
158
|
+
def add_config(name, config)
|
159
|
+
@configurations[name] = config
|
160
|
+
end
|
161
|
+
|
162
|
+
# Fetch a MangoPay configuration from the list of configs. Throw error if not found
|
163
|
+
def get_config(name)
|
164
|
+
config = @configurations[name]
|
165
|
+
raise "Could not find any configuration with name '#{name}'" unless config
|
166
|
+
config
|
167
|
+
end
|
168
|
+
|
169
|
+
def remove_config(name)
|
170
|
+
raise "Could not find any configuration with name '#{name}'" unless @configurations[name]
|
171
|
+
@configurations[name] = nil
|
172
|
+
end
|
173
|
+
|
141
174
|
#
|
142
175
|
# - +method+: HTTP method; lowercase symbol, e.g. :get, :post etc.
|
143
176
|
# - +url+: the part after Configuration#root_url
|
@@ -13,6 +13,74 @@ describe MangoPay::Configuration do
|
|
13
13
|
}
|
14
14
|
end
|
15
15
|
|
16
|
+
it 'fails when calling with wrong client credentials, but succeeds after applying a new (correct) config' do
|
17
|
+
# create a wrong configuration
|
18
|
+
wrong_config = MangoPay::Configuration.new
|
19
|
+
wrong_config.client_id = 'placeholder'
|
20
|
+
wrong_config.client_apiKey = '0000'
|
21
|
+
wrong_config.preproduction = true
|
22
|
+
|
23
|
+
# create a valid configuration
|
24
|
+
valid_config = MangoPay::Configuration.new
|
25
|
+
valid_config.client_id = 'sdk-unit-tests'
|
26
|
+
valid_config.client_apiKey = 'cqFfFrWfCcb7UadHNxx2C9Lo6Djw8ZduLi7J9USTmu8bhxxpju'
|
27
|
+
valid_config.preproduction = true
|
28
|
+
|
29
|
+
# add the 2 configs to the list of MangoPay configs
|
30
|
+
MangoPay.add_config('wrong', wrong_config)
|
31
|
+
MangoPay.add_config('valid', valid_config)
|
32
|
+
|
33
|
+
# apply wrong config
|
34
|
+
MangoPay.get_config('wrong').apply_configuration
|
35
|
+
|
36
|
+
expect {
|
37
|
+
MangoPay::User.fetch()
|
38
|
+
}.to raise_error { |err|
|
39
|
+
expect(err).to be_a MangoPay::ResponseError
|
40
|
+
expect(err.code).to eq '401'
|
41
|
+
expect(err.message).to eq 'invalid_client'
|
42
|
+
}
|
43
|
+
|
44
|
+
# apply valid configuration
|
45
|
+
MangoPay.get_config('valid').apply_configuration
|
46
|
+
|
47
|
+
# expect success
|
48
|
+
users = MangoPay::User.fetch()
|
49
|
+
expect(users).to be_kind_of(Array)
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'fails when fetching a config that does not exist' do
|
53
|
+
expect {
|
54
|
+
MangoPay.get_config('placeholder')
|
55
|
+
}.to raise_error { |err|
|
56
|
+
expect(err).to be_a RuntimeError
|
57
|
+
expect(err.message).to eq "Could not find any configuration with name 'placeholder'"
|
58
|
+
}
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'succeeds when removing config' do
|
62
|
+
wrong_config = MangoPay::Configuration.new
|
63
|
+
wrong_config.client_id = 'placeholder'
|
64
|
+
wrong_config.client_apiKey = '0000'
|
65
|
+
wrong_config.preproduction = true
|
66
|
+
|
67
|
+
MangoPay.add_config('wrong', wrong_config)
|
68
|
+
|
69
|
+
# pass when fetching config before removing it
|
70
|
+
MangoPay.get_config('wrong')
|
71
|
+
|
72
|
+
# remove config
|
73
|
+
MangoPay.remove_config('wrong')
|
74
|
+
|
75
|
+
# fail when trying to fetch after removal
|
76
|
+
expect {
|
77
|
+
MangoPay.get_config('wrong')
|
78
|
+
}.to raise_error { |err|
|
79
|
+
expect(err).to be_a RuntimeError
|
80
|
+
expect(err.message).to eq "Could not find any configuration with name 'wrong'"
|
81
|
+
}
|
82
|
+
end
|
83
|
+
|
16
84
|
it 'goes ok when calling with correct client credentials' do
|
17
85
|
reset_mangopay_configuration
|
18
86
|
users = MangoPay::User.fetch()
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mangopay
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.20.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Geoffroy Lorieux
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2023-11-
|
12
|
+
date: 2023-11-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: multi_json
|