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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7cca478fd5427ecdcc25baebef64a0a6fd4f0f74
4
- data.tar.gz: b61b8a1527217628dd0644b49668f31e0011ee79
3
+ metadata.gz: c4b5a93efca48b194d39cbe3a444e3c485cfff72
4
+ data.tar.gz: 1cec263496592b14acc81084ff041095cf8056a4
5
5
  SHA512:
6
- metadata.gz: 8e33ddf6dae4e6c65876e528cf4f7e4fe6b3fc5df725ba0660d4d9e50f8cdab47d45dc25c0d958281f4d75391d3029ada2ff2fb509aed49255dccc998af07e54
7
- data.tar.gz: 45a8329ca80fa71af75a9406f6fddd66d27847f8a6fd0021740285ceca63feb8db09ed90f018c7c50057af8db36e7cb93c1a89278ea4d53998fdd2fa8798fed8
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.2"
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
@@ -1,3 +1,3 @@
1
1
  module Esi
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.7"
3
3
  end
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.5
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-09-16 00:00:00.000000000 Z
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.2'
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.2'
26
+ version: '1.4'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: addressable
29
29
  requirement: !ruby/object:Gem::Requirement