quiz_api_client 4.0.0 → 4.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +28 -0
- data/lib/quiz_api_client/config.rb +6 -1
- data/lib/quiz_api_client/http_client.rb +16 -5
- data/lib/quiz_api_client/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f901bb687e405ab11127e8cbbe476f38c3578d122d838b25438cc106287b4d83
|
4
|
+
data.tar.gz: 6bae389bad7c912f709747a00a562e42cd10e4b85d1d72f5a7c5ffff6564ae61
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 519030cead9c1d820cf40bb489029433f751ce41e6488dcddfd7a8520ea2c47c5fa7a8a96e0aaea59640793f0efcc7fcd825c3d5e2fbe026533cb9d18208fd18
|
7
|
+
data.tar.gz: b906985f27f6e78e734f248685ae071efde9414cc3198d5a214caf9d54d8c1d2f29e6cc7d9e53677eac2c1c1d4d9bbd3016f3cea210173c1cf00628784d18507
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
CHANGELOG
|
2
|
+
=========
|
3
|
+
|
4
|
+
All notable changes to this project will be documented in this file. This
|
5
|
+
project adheres to [Semantic Versioning](http://semver.org/).
|
6
|
+
|
7
|
+
[TOC]
|
8
|
+
|
9
|
+
## 4.1.0 (2021-10-27)
|
10
|
+
|
11
|
+
### Breaking changes (potentially)
|
12
|
+
|
13
|
+
* All non-successful (2xx) responses will raise `QuizApiClient::HttpClient::RequestFailed` error except for 401 and 422
|
14
|
+
* Can be overridden in `allowable_response_codes` config
|
15
|
+
|
16
|
+
## 4.0.0 (2021-10-18)
|
17
|
+
|
18
|
+
### Breaking changes
|
19
|
+
|
20
|
+
* Ruby 2.4.x is no longer supported
|
21
|
+
* Ruby 2.5.x is no longer supported
|
22
|
+
|
23
|
+
### Changed
|
24
|
+
* Minimum Ruby version to 2.6.x
|
25
|
+
* Internal classes use a configuration object instead parameters on instantiation
|
26
|
+
* Instantiating `QuizApiClient::Client` remains the same
|
27
|
+
* Added `error_handler` configuration to work with Sentry Raven gem
|
28
|
+
|
@@ -1,12 +1,13 @@
|
|
1
1
|
module QuizApiClient
|
2
2
|
class Config
|
3
|
+
DEFAULT_ALLOWABLE_RESPONSE_CODES = [401, 422].freeze
|
3
4
|
DEFAULT_PROTOCOL = 'https'.freeze
|
4
5
|
ERROR_HANDLERS = %i[sentry_raven].freeze
|
5
6
|
|
6
7
|
class InvalidErrorHandler < StandardError; end
|
7
8
|
|
8
9
|
attr_reader :error_handler
|
9
|
-
attr_writer :protocol
|
10
|
+
attr_writer :protocol, :allowable_response_codes
|
10
11
|
attr_accessor :consumer_key, :consumer_request_id, :host, :shared_secret
|
11
12
|
|
12
13
|
def initialize
|
@@ -23,6 +24,10 @@ module QuizApiClient
|
|
23
24
|
@error_handler = handler
|
24
25
|
end
|
25
26
|
|
27
|
+
def allowable_response_codes
|
28
|
+
@allowable_response_codes || DEFAULT_ALLOWABLE_RESPONSE_CODES
|
29
|
+
end
|
30
|
+
|
26
31
|
private
|
27
32
|
|
28
33
|
def validate_error_hander!(handler)
|
@@ -4,7 +4,14 @@ module QuizApiClient
|
|
4
4
|
class HttpClient
|
5
5
|
include HTTParty
|
6
6
|
|
7
|
-
class RequestFailed < StandardError
|
7
|
+
class RequestFailed < StandardError
|
8
|
+
attr_reader :context
|
9
|
+
|
10
|
+
def initialize(context)
|
11
|
+
@context = context
|
12
|
+
super(context)
|
13
|
+
end
|
14
|
+
end
|
8
15
|
|
9
16
|
attr_reader :jwt, :uri, :config
|
10
17
|
|
@@ -75,11 +82,13 @@ module QuizApiClient
|
|
75
82
|
end
|
76
83
|
|
77
84
|
def make_request(method, url, request_options = {})
|
78
|
-
self.class.send(
|
85
|
+
resp = self.class.send(
|
79
86
|
method,
|
80
87
|
url,
|
81
88
|
default_request_data.merge(request_options)
|
82
89
|
)
|
90
|
+
raise_error(method, url, response: resp) unless successful_response?(resp)
|
91
|
+
resp
|
83
92
|
rescue HTTParty::Error, Errno::ECONNREFUSED, Net::ReadTimeout => e
|
84
93
|
raise_error(method, url, current_error: e)
|
85
94
|
end
|
@@ -91,8 +100,6 @@ module QuizApiClient
|
|
91
100
|
|
92
101
|
until request_url.nil?
|
93
102
|
resp = make_request(method, request_url, request_options)
|
94
|
-
raise_error(method, url, response: resp) unless resp.code == 200
|
95
|
-
|
96
103
|
entities.concat(resp.parsed_response)
|
97
104
|
request_url, request_options = next_page(resp, url, options)
|
98
105
|
end
|
@@ -182,7 +189,11 @@ module QuizApiClient
|
|
182
189
|
|
183
190
|
record_error_context(context)
|
184
191
|
|
185
|
-
raise error_class, error_message(current_error, url, response)
|
192
|
+
raise error_class.new(context), error_message(current_error, url, response)
|
193
|
+
end
|
194
|
+
|
195
|
+
def successful_response?(resp)
|
196
|
+
resp.success? || config.allowable_response_codes.include?(resp.code)
|
186
197
|
end
|
187
198
|
end
|
188
199
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: quiz_api_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Wang
|
@@ -20,7 +20,7 @@ authors:
|
|
20
20
|
autorequire:
|
21
21
|
bindir: exe
|
22
22
|
cert_chain: []
|
23
|
-
date: 2021-10-
|
23
|
+
date: 2021-10-27 00:00:00.000000000 Z
|
24
24
|
dependencies:
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: httparty
|
@@ -200,6 +200,7 @@ files:
|
|
200
200
|
- ".gitignore"
|
201
201
|
- ".rspec"
|
202
202
|
- ".rubocop.yml"
|
203
|
+
- CHANGELOG.md
|
203
204
|
- Dockerfile
|
204
205
|
- Gemfile
|
205
206
|
- Jenkinsfile
|