esi 0.1.5 → 0.1.7
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/esi.gemspec +1 -1
- data/lib/esi.rb +13 -2
- data/lib/esi/client.rb +16 -0
- data/lib/esi/o_auth.rb +5 -1
- data/lib/esi/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c4b5a93efca48b194d39cbe3a444e3c485cfff72
|
4
|
+
data.tar.gz: 1cec263496592b14acc81084ff041095cf8056a4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1633b582d5bb89a30a6572b5717d5cd1290da97a6f122b256d987e98a253f1fcde9ae01a8f6d90db98c4061a4ad38706e57685829d9ea37010d7bbb8ded8d0d9
|
7
|
+
data.tar.gz: 59f485fb251825769b14c18f670b12516bda9a31634edaff11ad4da0d67f8fedaffefe94c1eb8c46dca137eac1168408c6e7210190327c46b2bec96605cd62d4
|
data/esi.gemspec
CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.files = %w(LICENSE.txt README.md esi.gemspec) + Dir['lib/**/*.rb']
|
18
18
|
spec.require_paths = ["lib"]
|
19
19
|
|
20
|
-
spec.add_dependency "oauth2", "~> 1.
|
20
|
+
spec.add_dependency "oauth2", "~> 1.4"
|
21
21
|
spec.add_dependency "addressable", "~> 2.3"
|
22
22
|
spec.add_dependency "recursive-open-struct", "~> 1"
|
23
23
|
spec.add_dependency "activesupport"
|
data/lib/esi.rb
CHANGED
@@ -67,6 +67,7 @@ module Esi
|
|
67
67
|
log_level: :info,
|
68
68
|
log_target: STDOUT,
|
69
69
|
response_log_path: nil,
|
70
|
+
timeout: 15,
|
70
71
|
client_id: nil,
|
71
72
|
client_secret: nil,
|
72
73
|
scopes: SCOPES
|
@@ -105,11 +106,12 @@ module Esi
|
|
105
106
|
end
|
106
107
|
|
107
108
|
class ApiError < OAuth2::Error
|
108
|
-
attr_reader :key, :message, :type
|
109
|
+
attr_reader :key, :message, :type, :original_exception
|
109
110
|
|
110
|
-
def initialize(response)
|
111
|
+
def initialize(response, original_exception=nil)
|
111
112
|
super(response.original_response)
|
112
113
|
|
114
|
+
@original_exception = original_exception
|
113
115
|
@code = response.original_response.status
|
114
116
|
@key = response.data[:key]
|
115
117
|
@message = response.data[:message].presence || response.data[:error]
|
@@ -117,6 +119,15 @@ module Esi
|
|
117
119
|
end
|
118
120
|
end
|
119
121
|
|
122
|
+
class ApiRequestError < StandardError
|
123
|
+
attr_reader :original_exception
|
124
|
+
|
125
|
+
def initialize(original_exception)
|
126
|
+
@original_exception = original_exception
|
127
|
+
super(original_exception.message)
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
120
131
|
class ApiUnknownError < ApiError; end
|
121
132
|
class ApiInvalidAppClientKeysError < ApiError; end
|
122
133
|
class ApiNotFoundError < ApiError; end
|
data/lib/esi/client.rb
CHANGED
@@ -71,14 +71,25 @@ module Esi
|
|
71
71
|
|
72
72
|
def request(call, url=nil, &block)
|
73
73
|
response = nil
|
74
|
+
last_ex = nil
|
75
|
+
|
74
76
|
url ||= call.url
|
75
77
|
debug "Starting request: #{url}"
|
76
78
|
|
77
79
|
ActiveSupport::Notifications.instrument('esi.client.request') do
|
78
80
|
1.upto(MAX_ATTEMPTS) do |try|
|
81
|
+
last_ex = nil
|
82
|
+
|
79
83
|
begin
|
80
84
|
response = oauth.request(call.method, url)
|
85
|
+
rescue Net::ReadTimeout => e
|
86
|
+
last_ex = e
|
87
|
+
logger.error "ReadTimeout received"
|
88
|
+
sleep 2
|
89
|
+
next
|
81
90
|
rescue OAuth2::Error => e
|
91
|
+
last_ex = e
|
92
|
+
|
82
93
|
case e.response.status
|
83
94
|
when 502 # Temporary server error
|
84
95
|
logger.error "TemporaryServerError, sleeping for 15 seconds"
|
@@ -111,6 +122,11 @@ module Esi
|
|
111
122
|
end
|
112
123
|
|
113
124
|
debug "Request finished"
|
125
|
+
if last_ex
|
126
|
+
logger.error "Request failed with #{last_ex.class}"
|
127
|
+
raise ApiRequestError.new(last_ex)
|
128
|
+
end
|
129
|
+
|
114
130
|
ActiveSupport::Notifications.instrument('esi.client.response.initialize') do
|
115
131
|
response = Response.new(response)
|
116
132
|
end
|
data/lib/esi/o_auth.rb
CHANGED
@@ -21,7 +21,11 @@ module Esi
|
|
21
21
|
@client ||= OAuth2::Client.new(
|
22
22
|
Esi.config.client_id, Esi.config.client_secret,
|
23
23
|
{ site: Esi.config.oauth_host }
|
24
|
-
)
|
24
|
+
) do |conn|
|
25
|
+
conn.adapter :net_http do |http|
|
26
|
+
http.read_timeout = Esi.config.timeout
|
27
|
+
end
|
28
|
+
end
|
25
29
|
end
|
26
30
|
end
|
27
31
|
|
data/lib/esi/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: esi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Danny Hiemstra
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-10-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: oauth2
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.4'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
26
|
+
version: '1.4'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: addressable
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|