active_rest_client 1.0.3 → 1.0.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: 95a7b0745cf0433d0d39a71335488abf9d5c7db7
4
- data.tar.gz: 186afb738e60e270b25dae6963e476cfb97b27f7
3
+ metadata.gz: 168401e841f472c8c7dbb6295e9a7b6f87e10712
4
+ data.tar.gz: eb08bff09d6e74f4c3f1dc3a6933113e726cd620
5
5
  SHA512:
6
- metadata.gz: 7638217032e8783304954e8cd3aac40d2bd7df4a0a8ac2d824c24480a544b0a3d1e4255aad45ddeaed8d20d2f408c4abfb01c847d819f62971c8e83737927425
7
- data.tar.gz: 458acc1e2864a505f281a194d87dfe70dff2b1415ba72adb5ca3e12246f8ad39b4e5e52f402bd5d2696c39e01a075d0cbe34d4c03470d76fa8873d056f467103
6
+ metadata.gz: ca279962a442b496caa49d6dff757966bde80df37d7ef9d24e721a64f547a98c5200e4e0e8bf24136255ac7103797831b38c5b83f9da3897fddf739b004d72a8
7
+ data.tar.gz: 4deb89b8022c5da47c761df1a3853bb16b77949676b1f090cf87150ab0d8389c8b4297a3f22cd61ced2d1c1033add4e271cda532ac629c319158db0b28201013
data/README.md CHANGED
@@ -198,6 +198,31 @@ If you need to, you can access properties of the HAL association. By default ju
198
198
  @person.students[0]._hal_attributes("title")
199
199
  ```
200
200
 
201
+ #### Association Type 4 - Nested Resources
202
+
203
+ It's common to have resources that are logically children of other resources. For example, suppose that your API includes these endpoints:
204
+
205
+ | HTTP Verb | Path | |
206
+ |-----------|-----------------------------|------------------------------------------|
207
+ | POST | /magazines/:magazine_id/ads | create a new ad belonging to a magazine |
208
+ | GET | /magazines/:magazine_id/ads | display a list of all ads for a magazine |
209
+
210
+ In these cases, your child class will contain the following:
211
+
212
+ ```ruby
213
+ class Ad < ActiveRestClient::Base
214
+ post :create, "/magazines/:magazine_id/ads"
215
+ get :all, "/magazines/:magazine_id/ads"
216
+ end
217
+ ```
218
+
219
+ You can then access Ads by specifying their magazine IDs:
220
+
221
+ ```ruby
222
+ Add.all(magazine_id: 1)
223
+ Add.create(magazine_id: 1, title: "My Add Title")
224
+ ```
225
+
201
226
  #### Combined Example
202
227
 
203
228
  OK, so let's say you have an API for getting articles. Each article has a property called `title` (which is a string) and a property `images` which includes a list of URIs. Following this URI would take you to a image API that returns the image's `filename` and `filesize`. We'll also assume this is a HAL compliant API. We would declare our two models (one for articles and one for images) like the following:
@@ -29,7 +29,7 @@ module ActiveRestClient
29
29
  end
30
30
 
31
31
  def self.info(message)
32
- if defined?(Rails) && Rails.respond_to?(:logger)
32
+ if defined?(Rails) && Rails.respond_to?(:logger) && Rails.logger
33
33
  Rails.logger.info(message)
34
34
  elsif @logfile
35
35
  File.open(@logfile, "a") do |f|
@@ -274,9 +274,9 @@ module ActiveRestClient
274
274
 
275
275
  def handle_response(response)
276
276
  @response = response
277
- @response.status ||= 200
277
+ status = @response.status || 200
278
278
 
279
- if (200..399).include? @response.status
279
+ if (200..399).include?(status)
280
280
  if @method[:options][:plain]
281
281
  return @response = response.body
282
282
  elsif is_json_response?
@@ -287,7 +287,7 @@ module ActiveRestClient
287
287
  end
288
288
  result = generate_new_object
289
289
  else
290
- raise ResponseParseException.new(status:@response.status, body:@response.body)
290
+ raise ResponseParseException.new(status:status, body:@response.body)
291
291
  end
292
292
  else
293
293
  if is_json_response?
@@ -295,22 +295,21 @@ module ActiveRestClient
295
295
  else
296
296
  error_response = @response.body
297
297
  end
298
- if @response.status == 400
299
- raise HTTPBadRequestClientException.new(status:@response.status, result:error_response, url:@url)
300
- elsif @response.status == 401
301
- raise HTTPUnauthorisedClientException.new(status:@response.status, result:error_response, url:@url)
302
- elsif @response.status == 403
303
- raise HTTPForbiddenClientException.new(status:@response.status, result:error_response, url:@url)
304
- elsif @response.status == 404
305
- raise HTTPNotFoundClientException.new(status:@response.status, result:error_response, url:@url)
306
- elsif (400..499).include? @response.status
307
- raise HTTPClientException.new(status:@response.status, result:error_response, url:@url)
308
- elsif (500..599).include? @response.status
309
- raise HTTPServerException.new(status:@response.status, result:error_response, url:@url)
298
+ if status == 400
299
+ raise HTTPBadRequestClientException.new(status:status, result:error_response, url:@url)
300
+ elsif status == 401
301
+ raise HTTPUnauthorisedClientException.new(status:status, result:error_response, url:@url)
302
+ elsif status == 403
303
+ raise HTTPForbiddenClientException.new(status:status, result:error_response, url:@url)
304
+ elsif status == 404
305
+ raise HTTPNotFoundClientException.new(status:status, result:error_response, url:@url)
306
+ elsif (400..499).include? status
307
+ raise HTTPClientException.new(status:status, result:error_response, url:@url)
308
+ elsif (500..599).include? status
309
+ raise HTTPServerException.new(status:status, result:error_response, url:@url)
310
310
  end
311
311
  end
312
312
 
313
-
314
313
  result
315
314
  end
316
315
 
@@ -1,3 +1,3 @@
1
1
  module ActiveRestClient
2
- VERSION = "1.0.3"
2
+ VERSION = "1.0.4"
3
3
  end
@@ -69,6 +69,13 @@ describe ActiveRestClient::Request do
69
69
  ExampleClient.remove(id:1)
70
70
  end
71
71
 
72
+ it "should work with faraday response objects" do
73
+ response = Faraday::Response.new
74
+ response.stub(:body).and_return({}.to_json)
75
+ ActiveRestClient::Connection.any_instance.should_receive(:get).and_return(response)
76
+ expect { ExampleClient.all }.to_not raise_error
77
+ end
78
+
72
79
  it "should pass through get parameters" do
73
80
  ActiveRestClient::Connection.any_instance.should_receive(:get).with("/?debug=true", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}', headers:{}))
74
81
  ExampleClient.all debug:true
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_rest_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Which Ltd
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-07-30 00:00:00.000000000 Z
12
+ date: 2014-09-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler