esi 0.1.5 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- 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
|