revo-loans_api 0.0.22 → 0.0.23
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/Gemfile.lock +3 -1
- data/README.md +5 -0
- data/docker-compose.yml +8 -0
- data/lib/revo/loans_api/client.rb +99 -28
- data/lib/revo/loans_api/version.rb +1 -1
- data/revo-loans_api.gemspec +2 -1
- metadata +19 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fa50f24dd72aa71f069c3bcc3a8b72f3e17701ff4ade63d483f789016be694ac
|
4
|
+
data.tar.gz: 2383424184de27752a8b89505a97985c4772d9c608f49ce17a5642c5fe8010d2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf0b0126ac8abdb2c67f84b2737e7532fa086a25e6474e8ea829004a045c9f395cee434ce56523ee872982c1c4ab6fd3a54a672fdf8f7308e9c95ec5fbfbdfb5
|
7
|
+
data.tar.gz: a156f89429045bb046eae8baa4e8859bd136b6c3cb92679e076547156eb2d5dcb68339c7d25b86181deced28d2507a140c2013c18eb20fc355961e95533fe04f
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
revo-loans_api (0.0.
|
4
|
+
revo-loans_api (0.0.23)
|
5
5
|
activesupport
|
6
6
|
http
|
7
7
|
|
@@ -16,6 +16,7 @@ GEM
|
|
16
16
|
zeitwerk (~> 2.2)
|
17
17
|
addressable (2.7.0)
|
18
18
|
public_suffix (>= 2.0.2, < 5.0)
|
19
|
+
byebug (11.0.1)
|
19
20
|
concurrent-ruby (1.1.6)
|
20
21
|
crack (0.4.3)
|
21
22
|
safe_yaml (~> 1.0.0)
|
@@ -74,6 +75,7 @@ PLATFORMS
|
|
74
75
|
|
75
76
|
DEPENDENCIES
|
76
77
|
bundler (~> 1.17)
|
78
|
+
byebug
|
77
79
|
rake (~> 10.0)
|
78
80
|
revo-loans_api!
|
79
81
|
rspec (~> 3.0)
|
data/README.md
CHANGED
@@ -509,6 +509,11 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
|
|
509
509
|
|
510
510
|
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
511
511
|
|
512
|
+
## Docker
|
513
|
+
|
514
|
+
`docker-compose run specs bundle`
|
515
|
+
`docker-compose run specs rspec`
|
516
|
+
|
512
517
|
## Contributing
|
513
518
|
|
514
519
|
Bug reports and pull requests are welcome on GitHub at https://github.com/RevoTechnology/LoansClient.rb.
|
data/docker-compose.yml
ADDED
@@ -12,24 +12,35 @@ class Revo::LoansApi::Client
|
|
12
12
|
|
13
13
|
Result = Struct.new(:success?, :response, keyword_init: true)
|
14
14
|
|
15
|
-
def initialize(
|
15
|
+
def initialize(
|
16
|
+
base_url:,
|
17
|
+
login: nil,
|
18
|
+
password: nil,
|
19
|
+
session_token: nil,
|
20
|
+
application_source: nil
|
21
|
+
)
|
16
22
|
@base_url = base_url
|
17
23
|
@login = login
|
18
24
|
@password = password
|
19
25
|
@session_token = session_token
|
26
|
+
@application_source = application_source
|
20
27
|
end
|
21
28
|
|
22
29
|
def create_session
|
23
30
|
make_request(
|
24
31
|
:post, 'sessions',
|
25
|
-
user: { login: login, password: password }
|
32
|
+
params: { user: { login: login, password: password } }
|
26
33
|
).tap do |result|
|
27
34
|
@session_token = result.response.dig(:user, :authentication_token) if result&.success?
|
28
35
|
end
|
29
36
|
end
|
30
37
|
|
31
38
|
def create_loan_request(options)
|
32
|
-
response = make_request(
|
39
|
+
response = make_request(
|
40
|
+
:post,
|
41
|
+
'loan_requests',
|
42
|
+
params: loan_request_params(options)
|
43
|
+
)
|
33
44
|
return response unless response.success?
|
34
45
|
|
35
46
|
@loan_request_token = response.response.dig(:loan_request, :token)
|
@@ -46,7 +57,11 @@ class Revo::LoansApi::Client
|
|
46
57
|
|
47
58
|
def update_loan_request(token:, options:)
|
48
59
|
update_params = { loan_request: options }
|
49
|
-
response = make_request(
|
60
|
+
response = make_request(
|
61
|
+
:put,
|
62
|
+
"loan_requests/#{token}",
|
63
|
+
params: update_params
|
64
|
+
)
|
50
65
|
|
51
66
|
return response unless response.success?
|
52
67
|
|
@@ -78,11 +93,20 @@ class Revo::LoansApi::Client
|
|
78
93
|
end
|
79
94
|
|
80
95
|
def complete_loan_request(token:, code:)
|
81
|
-
make_request(
|
96
|
+
make_request(
|
97
|
+
:post,
|
98
|
+
"loan_requests/#{token}/confirmation",
|
99
|
+
params: { code: code }
|
100
|
+
)
|
82
101
|
end
|
83
102
|
|
84
103
|
def create_loan(token:, term_id:)
|
85
|
-
make_request(
|
104
|
+
make_request(
|
105
|
+
:post,
|
106
|
+
"loan_requests/#{token}/loan",
|
107
|
+
params: { term_id: term_id },
|
108
|
+
headers: { 'Application-Source': application_source }
|
109
|
+
)
|
86
110
|
end
|
87
111
|
|
88
112
|
def finalize_loan(token:, code:, sms_info: '0', skip_confirmation: false)
|
@@ -97,12 +121,19 @@ class Revo::LoansApi::Client
|
|
97
121
|
loan_params.delete(:confirmation_code)
|
98
122
|
end
|
99
123
|
|
100
|
-
make_request(
|
124
|
+
make_request(
|
125
|
+
:post,
|
126
|
+
"loan_requests/#{token}/loan/finalization",
|
127
|
+
params: { loan: loan_params }
|
128
|
+
)
|
101
129
|
end
|
102
130
|
|
103
131
|
def confirm_loan(token:, bill:)
|
104
|
-
|
105
|
-
|
132
|
+
response = make_request(
|
133
|
+
:put,
|
134
|
+
"loan_requests/#{token}/loan/bill",
|
135
|
+
params: { loan: { bill: bill } }
|
136
|
+
)
|
106
137
|
|
107
138
|
return response unless response.success?
|
108
139
|
|
@@ -111,7 +142,11 @@ class Revo::LoansApi::Client
|
|
111
142
|
|
112
143
|
# returns
|
113
144
|
def orders(store_id:, filters: {})
|
114
|
-
make_request(
|
145
|
+
make_request(
|
146
|
+
:get,
|
147
|
+
'orders',
|
148
|
+
params: { store_id: store_id, filters: filters }
|
149
|
+
)
|
115
150
|
end
|
116
151
|
|
117
152
|
def send_return_confirmation_code(order_id:)
|
@@ -127,7 +162,7 @@ class Revo::LoansApi::Client
|
|
127
162
|
store_id: store_id
|
128
163
|
}
|
129
164
|
}
|
130
|
-
make_request(:post, 'returns', params)
|
165
|
+
make_request(:post, 'returns', params: params)
|
131
166
|
end
|
132
167
|
|
133
168
|
def confirm_return(return_id:)
|
@@ -139,33 +174,53 @@ class Revo::LoansApi::Client
|
|
139
174
|
end
|
140
175
|
|
141
176
|
def start_self_registration(token:, mobile_phone:, skip_message: false)
|
142
|
-
make_request(
|
143
|
-
|
177
|
+
make_request(
|
178
|
+
:post,
|
179
|
+
"loan_requests/#{token}/client/self_registration",
|
180
|
+
params: { mobile_phone: mobile_phone, skip_message: skip_message }
|
181
|
+
)
|
144
182
|
end
|
145
183
|
|
146
184
|
def check_client_code(token:, code:)
|
147
|
-
make_request(
|
185
|
+
make_request(
|
186
|
+
:post,
|
187
|
+
"loan_requests/#{token}/client/check_code",
|
188
|
+
params: { code: code }
|
189
|
+
)
|
148
190
|
end
|
149
191
|
|
150
192
|
def create_client(token:, client_params:, provider_data: {})
|
151
|
-
make_request(
|
152
|
-
|
193
|
+
make_request(
|
194
|
+
:post,
|
195
|
+
"loan_requests/#{token}/client",
|
196
|
+
params: { client: client_params, provider_data: provider_data }
|
197
|
+
)
|
153
198
|
end
|
154
199
|
|
155
200
|
def update_client(id:, client_params:)
|
156
|
-
make_request(:patch, "
|
201
|
+
make_request(:patch, "clients/#{id}", params: { client: client_params })
|
157
202
|
end
|
158
203
|
|
159
204
|
def get_client(guid:)
|
160
|
-
make_request(:get, "
|
205
|
+
make_request(:get, "clients/#{guid}")
|
161
206
|
end
|
162
207
|
|
163
208
|
def create_virtual_card(token:, term_id:)
|
164
|
-
make_request(
|
209
|
+
make_request(
|
210
|
+
:post,
|
211
|
+
"loan_requests/#{token}/virtual_card",
|
212
|
+
params: { term_id: term_id },
|
213
|
+
headers: { 'Application-Source': application_source }
|
214
|
+
)
|
165
215
|
end
|
166
216
|
|
167
217
|
def create_card_loan(token:, term_id:)
|
168
|
-
make_request(
|
218
|
+
make_request(
|
219
|
+
:post,
|
220
|
+
"loan_requests/#{token}/card_loan",
|
221
|
+
params: { term_id: term_id },
|
222
|
+
headers: { 'Application-Source': application_source }
|
223
|
+
)
|
169
224
|
end
|
170
225
|
|
171
226
|
def send_billing_shift_confirmation_code(client_id:)
|
@@ -177,12 +232,19 @@ class Revo::LoansApi::Client
|
|
177
232
|
end
|
178
233
|
|
179
234
|
def confirm_billing_shift(client_id:, code:, billing_chain:)
|
180
|
-
make_request(
|
181
|
-
|
235
|
+
make_request(
|
236
|
+
:post,
|
237
|
+
"clients/#{client_id}/billing_shift/confirmation",
|
238
|
+
params: { code: code, billing_chain: billing_chain }
|
239
|
+
)
|
182
240
|
end
|
183
241
|
|
184
242
|
def increase_client_limit(client_id:, amount:)
|
185
|
-
make_request(
|
243
|
+
make_request(
|
244
|
+
:patch,
|
245
|
+
"clients/#{client_id}/limit",
|
246
|
+
params: { amount: amount }
|
247
|
+
)
|
186
248
|
end
|
187
249
|
|
188
250
|
def client_loan_documents(client_id:, loan_application_id:)
|
@@ -194,14 +256,18 @@ class Revo::LoansApi::Client
|
|
194
256
|
end
|
195
257
|
|
196
258
|
def update_client_additional_services(client_id:, additional_services:)
|
197
|
-
make_request(
|
259
|
+
make_request(
|
260
|
+
:patch,
|
261
|
+
"clients/#{client_id}/additional_services",
|
262
|
+
params: additional_services
|
263
|
+
)
|
198
264
|
end
|
199
265
|
|
200
266
|
private
|
201
267
|
|
202
268
|
API_CONTENT_TYPE = 'application/json'.freeze
|
203
269
|
|
204
|
-
attr_reader :base_url, :login, :password
|
270
|
+
attr_reader :base_url, :login, :password, :application_source
|
205
271
|
|
206
272
|
def connection
|
207
273
|
@connection ||= HTTP.persistent(base_url)
|
@@ -214,9 +280,14 @@ class Revo::LoansApi::Client
|
|
214
280
|
Result.new(success?: false, response: { errors: { base: [:cant_fetch_loan_request_terms] } })
|
215
281
|
end
|
216
282
|
|
217
|
-
def make_request(method, endpoint, params
|
218
|
-
headers = { Authorization: session_token }.compact
|
219
|
-
response = connection.public_send(
|
283
|
+
def make_request(method, endpoint, params: {}, headers: {}, &block)
|
284
|
+
headers = { 'Authorization': session_token }.merge(headers).compact
|
285
|
+
response = connection.public_send(
|
286
|
+
method,
|
287
|
+
url_for(endpoint),
|
288
|
+
json: params,
|
289
|
+
headers: headers
|
290
|
+
)
|
220
291
|
handle_response(response, &block)
|
221
292
|
rescue HTTP::Error => e
|
222
293
|
handle_error(e)
|
data/revo-loans_api.gemspec
CHANGED
@@ -34,8 +34,9 @@ Gem::Specification.new do |spec|
|
|
34
34
|
spec.add_dependency 'http'
|
35
35
|
spec.add_dependency 'activesupport'
|
36
36
|
spec.add_development_dependency 'bundler', '~> 1.17'
|
37
|
+
spec.add_development_dependency 'byebug'
|
37
38
|
spec.add_development_dependency 'rake', '~> 10.0'
|
38
39
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
39
|
-
spec.add_development_dependency 'webmock'
|
40
40
|
spec.add_development_dependency 'vcr'
|
41
|
+
spec.add_development_dependency 'webmock'
|
41
42
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: revo-loans_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.23
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Revo Developers
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-03-
|
11
|
+
date: 2020-03-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: http
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '1.17'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: byebug
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: rake
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -81,7 +95,7 @@ dependencies:
|
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '3.0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
98
|
+
name: vcr
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
86
100
|
requirements:
|
87
101
|
- - ">="
|
@@ -95,7 +109,7 @@ dependencies:
|
|
95
109
|
- !ruby/object:Gem::Version
|
96
110
|
version: '0'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
112
|
+
name: webmock
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
100
114
|
requirements:
|
101
115
|
- - ">="
|
@@ -126,6 +140,7 @@ files:
|
|
126
140
|
- Rakefile
|
127
141
|
- bin/console
|
128
142
|
- bin/setup
|
143
|
+
- docker-compose.yml
|
129
144
|
- lib/revo/loans_api.rb
|
130
145
|
- lib/revo/loans_api/client.rb
|
131
146
|
- lib/revo/loans_api/version.rb
|