api_client 0.5.3 → 0.5.4

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: e2ce9166ef3de775d807a9328d7c8d3cd1be6749
4
- data.tar.gz: 93e0793ecc97aaba3db316c710a185241324ef42
3
+ metadata.gz: f3a8502965a1402c91399c6abd5f1259374f2548
4
+ data.tar.gz: 80c0e43636c592037d8e06e30561808612206fff
5
5
  SHA512:
6
- metadata.gz: 73082e9434cb43362b144b4c0842eebdec78b156049d577424c6bfa1a6253798e1c697b1a71e75a2d2998b450591fc1227fa94859d804f5f767206ddb3ed85c4
7
- data.tar.gz: 17d4779a154186e9cb74f570f94ac8e8420f364125f4d338c1c0dc456fc45a2ee2aed57ed1df34ed0f172d0b7f941d485b1f8492754bc16eabeac0104a904ba1
6
+ metadata.gz: 2c3e3cca8a0f0698db139544f118826eb3c44b4161634a303f3a6642ce849d9b2abc908977696a4807793317c531a72ba15606c63689151b1bf7a78cd5c9939f
7
+ data.tar.gz: 323466b4cf45d62c5f18b232bb9f28d4aa8b236a75287d769050d1bf583b1633d0696e6382da88aeb68cbaf3141e2150ae8dc0bb10105f0da298731d4348ab01
@@ -30,7 +30,7 @@ module ApiClient
30
30
  # * headers - (optional) headers sent along with the request
31
31
  #
32
32
  def get(path, data = {}, headers = {})
33
- handle_response @handler.get(path, data, headers)
33
+ exec_request(:get, path, data, headers)
34
34
  end
35
35
 
36
36
  #### ApiClient::Connection::Abstract#post
@@ -43,7 +43,7 @@ module ApiClient
43
43
  #
44
44
  # This method automatically adds the application token header
45
45
  def post(path, data = {}, headers = {})
46
- handle_response @handler.post(path, data, headers)
46
+ exec_request(:post, path, data, headers)
47
47
  end
48
48
 
49
49
  #### ApiClient::Connection::Abstract#put
@@ -56,7 +56,7 @@ module ApiClient
56
56
  #
57
57
  # This method automatically adds the application token header
58
58
  def put(path, data = {}, headers = {})
59
- handle_response @handler.put(path, data, headers)
59
+ exec_request(:put, path, data, headers)
60
60
  end
61
61
 
62
62
  #### FS::Connection#delete
@@ -69,32 +69,40 @@ module ApiClient
69
69
  #
70
70
  # This method automatically adds the application token header
71
71
  def delete(path, data = {}, headers = {})
72
- handle_response @handler.delete(path, data, headers)
72
+ exec_request(:delete, path, data, headers)
73
73
  end
74
74
 
75
75
  private
76
76
 
77
- def handle_response(response)
78
- raise ApiClient::Errors::ConnectionFailed if !response
77
+ def exec_request(method, path, data, headers)
78
+ response = @handler.send(method, path, data, headers)
79
+ request = {method: method, path: path, data: data, headers: headers}
80
+ handle_response(request, response)
81
+ rescue Faraday::Error::ConnectionFailed => e
82
+ raise ApiClient::Errors::ConnectionFailed.new(e.message, request, response)
83
+ end
84
+
85
+ def handle_response(request, response)
86
+ raise ApiClient::Errors::ConnectionFailed.new(request, response) unless response
79
87
  case response.status
80
88
  when 401
81
- raise ApiClient::Errors::Unauthorized
89
+ raise ApiClient::Errors::Unauthorized.new(request, response)
82
90
  when 403
83
- raise ApiClient::Errors::Forbidden
91
+ raise ApiClient::Errors::Forbidden.new(request, response)
84
92
  when 404
85
- raise ApiClient::Errors::NotFound
93
+ raise ApiClient::Errors::NotFound.new(request, response)
86
94
  when 400
87
- raise ApiClient::Errors::BadRequest
95
+ raise ApiClient::Errors::BadRequest.new(request, response)
88
96
  when 406
89
- raise ApiClient::Errors::Unsupported
97
+ raise ApiClient::Errors::Unsupported.new(request, response)
90
98
  when 409
91
- raise ApiClient::Errors::Conflict
99
+ raise ApiClient::Errors::Conflict.new(request, response)
92
100
  when 422
93
- raise ApiClient::Errors::UnprocessableEntity.new(response.body)
101
+ raise ApiClient::Errors::UnprocessableEntity.new(response.body, request, response)
94
102
  when 300..399
95
- raise ApiClient::Errors::Redirect.new(response['Location'])
103
+ raise ApiClient::Errors::Redirect.new(response['Location'], request, response)
96
104
  when 500..599
97
- raise ApiClient::Errors::ServerError
105
+ raise ApiClient::Errors::ServerError.new(request, response)
98
106
  else
99
107
  response
100
108
  end
@@ -1,7 +1,16 @@
1
1
  module ApiClient
2
2
 
3
3
  module Errors
4
- class ApiClientError < StandardError; end
4
+ class ApiClientError < StandardError
5
+ def initialize(message=nil, request, response)
6
+ super(message)
7
+ @request = request
8
+ @response = response
9
+ end
10
+
11
+ attr_reader :request, :response
12
+ end
13
+
5
14
  class ConnectionFailed < ApiClientError; end
6
15
  class Config < ApiClientError; end
7
16
  class Unauthorized < ApiClientError; end
@@ -1,4 +1,3 @@
1
-
2
1
  module ApiClient
3
2
 
4
3
  class Scope
@@ -1,3 +1,3 @@
1
1
  module ApiClient
2
- VERSION = "0.5.3"
2
+ VERSION = "0.5.4"
3
3
  end
@@ -79,6 +79,7 @@ describe ApiClient::Connection::Basic do
79
79
  end
80
80
 
81
81
  describe "#handle_response" do
82
+ let(:request) { double }
82
83
 
83
84
  before do
84
85
  @instance = ApiClient::Connection::Basic.new("http://google.com")
@@ -87,56 +88,56 @@ describe ApiClient::Connection::Basic do
87
88
 
88
89
  it "raises an ApiClient::Errors::ConnectionFailed if there is no response" do
89
90
  lambda {
90
- @instance.send :handle_response, nil
91
+ @instance.send :handle_response, request, nil
91
92
  }.should raise_error(ApiClient::Errors::ConnectionFailed)
92
93
  end
93
94
 
94
95
  it "raises an ApiClient::Errors::Unauthorized if status is 401" do
95
96
  @response.env[:status] = 401
96
97
  lambda {
97
- @instance.send :handle_response, @response
98
+ @instance.send :handle_response, request, @response
98
99
  }.should raise_error(ApiClient::Errors::Unauthorized)
99
100
  end
100
101
 
101
102
  it "raises an ApiClient::Errors::Forbidden if status is 403" do
102
103
  @response.env[:status] = 403
103
104
  lambda {
104
- @instance.send :handle_response, @response
105
+ @instance.send :handle_response, request, @response
105
106
  }.should raise_error(ApiClient::Errors::Forbidden)
106
107
  end
107
108
 
108
109
  it "raises an ApiClient::Errors::NotFound if status is 404" do
109
110
  @response.env[:status] = 404
110
111
  lambda {
111
- @instance.send :handle_response, @response
112
+ @instance.send :handle_response, request, @response
112
113
  }.should raise_error(ApiClient::Errors::NotFound)
113
114
  end
114
115
 
115
116
  it "raises an ApiClient::Errors::BadRequest if status is 400" do
116
117
  @response.env[:status] = 400
117
118
  lambda {
118
- @instance.send :handle_response, @response
119
+ @instance.send :handle_response, request, @response
119
120
  }.should raise_error(ApiClient::Errors::BadRequest)
120
121
  end
121
122
 
122
123
  it "raises an ApiClient::Errors::Unsupported if status is 406" do
123
124
  @response.env[:status] = 406
124
125
  lambda {
125
- @instance.send :handle_response, @response
126
+ @instance.send :handle_response, request, @response
126
127
  }.should raise_error(ApiClient::Errors::Unsupported)
127
128
  end
128
129
 
129
130
  it "raises an ApiClient::Errors::Conflict if status is 409" do
130
131
  @response.env[:status] = 409
131
132
  lambda {
132
- @instance.send :handle_response, @response
133
+ @instance.send :handle_response, request, @response
133
134
  }.should raise_error(ApiClient::Errors::Conflict)
134
135
  end
135
136
 
136
137
  it "raises an ApiClient::Errors::Unsupported if status is 422" do
137
138
  @response.env[:status] = 422
138
139
  lambda {
139
- @instance.send :handle_response, @response
140
+ @instance.send :handle_response, request, @response
140
141
  }.should raise_error(ApiClient::Errors::UnprocessableEntity)
141
142
  end
142
143
 
@@ -144,14 +145,14 @@ describe ApiClient::Connection::Basic do
144
145
  @response.env[:status] = 302
145
146
  @response.env[:response_headers] = { 'Location' => "https://google.com" }
146
147
  lambda {
147
- @instance.send :handle_response, @response
148
+ @instance.send :handle_response, request, @response
148
149
  }.should raise_error(ApiClient::Errors::Redirect)
149
150
  end
150
151
 
151
152
  it "raises an ApiClient::Errors::ServerError if status is 500..599" do
152
153
  @response.env[:status] = 502
153
154
  lambda {
154
- @instance.send :handle_response, @response
155
+ @instance.send :handle_response, request, @response
155
156
  }.should raise_error(ApiClient::Errors::ServerError)
156
157
  end
157
158
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: api_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 0.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcin Bunsch