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 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