Class: HeartlandRetail::Client::Resource
- Inherits:
-
Object
- Object
- HeartlandRetail::Client::Resource
- Includes:
- Collection
- Defined in:
- lib/heartland/client/resource.rb
Overview
An representation of an API resource identified by a URI. Allows triggering API calls via HTTP methods. Allows constructing new resources in a chained style by calling the methods that manipulate the URI and return a new resource.
Resources are usually constructed via the Client#[] method.
Instance Attribute Summary collapse
-
#client ⇒ Client
readonly
The underlying HeartlandRetail Client.
-
#uri ⇒ Addressable::URI
readonly
The resource’s URI.
Instance Method Summary collapse
-
#[](uri) ⇒ Resource
Returns a new subordinate resource with the given sub-path.
-
#clone(uri = nil) ⇒ Resource
Returns a cloned copy of the resource with the same URI.
-
#delete(headers = false) ⇒ Response
Performs a DELETE request against the resource’s URI and returns the Response.
-
#delete!(headers = false) ⇒ Response
Performs a DELETE request against the resource’s URI.
-
#embed(*embeds) ⇒ Resource
Returns a new resource with the given embeds added to the query string (via _include params).
-
#exists? ⇒ Boolean
Returns true if a HEAD request to the resource returns a successful response, false if it returns 404, otherwise raises an exception.
-
#get(headers = false) ⇒ Response
Performs a GET request against the resource’s URI and returns the Response.
-
#get!(headers = false) ⇒ Response
Performs a GET request against the resource’s URI.
-
#head(headers = false) ⇒ Response
Performs a HEAD request against the resource’s URI and returns the Response.
-
#head!(headers = false) ⇒ Response
Performs a HEAD request against the resource’s URI.
-
#initialize(client, uri_or_path) ⇒ Resource
constructor
A new instance of Resource.
-
#post(body, headers = false) ⇒ Response
Performs a POST request against the resource’s URI and returns the Response.
-
#post!(body, headers = false) ⇒ Response
Performs a POST request against the resource’s URI.
-
#put(body, headers = false) ⇒ Response
Performs a PUT request against the resource’s URI and returns the Response.
-
#put!(body, headers = false) ⇒ Response
Performs a PUT request against the resource’s URI.
- #query(params = nil) ⇒ Object (also: #params)
Methods included from Collection
#count, #each, #each_page, #empty?, #filter, #first, #only, #sort, #while_results
Constructor Details
#initialize(client, uri_or_path) ⇒ Resource
Returns a new instance of Resource.
34 35 36 37 |
# File 'lib/heartland/client/resource.rb', line 34 def initialize(client, uri_or_path) @client = client @uri = normalize_uri(uri_or_path) end |
Instance Attribute Details
#client ⇒ Client (readonly)
The underlying HeartlandRetail Client.
29 30 31 |
# File 'lib/heartland/client/resource.rb', line 29 def client @client end |
#uri ⇒ Addressable::URI (readonly)
The resource’s URI.
23 24 25 |
# File 'lib/heartland/client/resource.rb', line 23 def uri @uri end |
Instance Method Details
#[](uri) ⇒ Resource
Returns a new subordinate resource with the given sub-path.
118 119 120 |
# File 'lib/heartland/client/resource.rb', line 118 def [](uri) clone(self.uri.subpath(uri)) end |
#clone(uri = nil) ⇒ Resource
Returns a cloned copy of the resource with the same URI.
164 165 166 |
# File 'lib/heartland/client/resource.rb', line 164 def clone(uri=nil) self.class.new(client, uri ? uri : self.uri) end |
#delete(headers = false) ⇒ Response
Performs a DELETE request against the resource’s URI and returns the Response.
73 |
# File 'lib/heartland/client/resource.rb', line 73 def delete(headers=false); call_client(:delete, headers); end |
#delete!(headers = false) ⇒ Response
Performs a DELETE request against the resource’s URI. Returns the Response on success and raises a RequestFailed on failure.
82 |
# File 'lib/heartland/client/resource.rb', line 82 def delete!(headers=false); call_client(:delete!, headers); end |
#embed(*embeds) ⇒ Resource
Returns a new resource with the given embeds added to the query string (via _include params).
173 174 175 176 |
# File 'lib/heartland/client/resource.rb', line 173 def (*) = (query['_include'] || []) + query('_include' => ) end |
#exists? ⇒ Boolean
Returns true if a HEAD request to the resource returns a successful response, false if it returns 404, otherwise raises an exception.
185 186 187 188 189 190 191 192 |
# File 'lib/heartland/client/resource.rb', line 185 def exists? response = head return true if response.success? return false if response.status == 404 error = RequestFailed.new "Request during call to 'exists?' resulted in non-404 error." error.response = response raise error end |
#get(headers = false) ⇒ Response
Performs a GET request against the resource’s URI and returns the Response.
58 |
# File 'lib/heartland/client/resource.rb', line 58 def get(headers=false); call_client(:get, headers); end |
#get!(headers = false) ⇒ Response
Performs a GET request against the resource’s URI. Returns the Response on success and raises a RequestFailed on failure.
67 |
# File 'lib/heartland/client/resource.rb', line 67 def get!(headers=false); call_client(:get!, headers); end |
#head(headers = false) ⇒ Response
Performs a HEAD request against the resource’s URI and returns the Response.
43 |
# File 'lib/heartland/client/resource.rb', line 43 def head(headers=false); call_client(:head, headers); end |
#head!(headers = false) ⇒ Response
Performs a HEAD request against the resource’s URI. Returns the Response on success and raises a RequestFailed on failure..
52 |
# File 'lib/heartland/client/resource.rb', line 52 def head!(headers=false); call_client(:head!, headers); end |
#post(body, headers = false) ⇒ Response
Performs a POST request against the resource’s URI and returns the Response.
103 |
# File 'lib/heartland/client/resource.rb', line 103 def post(body, headers=false); call_client(:post, body, headers); end |
#post!(body, headers = false) ⇒ Response
Performs a POST request against the resource’s URI. Returns the Response on success and raises a RequestFailed on failure.
112 |
# File 'lib/heartland/client/resource.rb', line 112 def post!(body, headers=false); call_client(:post!, body, headers); end |
#put(body, headers = false) ⇒ Response
Performs a PUT request against the resource’s URI and returns the Response.
88 |
# File 'lib/heartland/client/resource.rb', line 88 def put(body, headers=false); call_client(:put, body, headers); end |
#put!(body, headers = false) ⇒ Response
Performs a PUT request against the resource’s URI. Returns the Response on success and raises a RequestFailed on failure.
97 |
# File 'lib/heartland/client/resource.rb', line 97 def put!(body, headers=false); call_client(:put!, body, headers); end |
#query(params) ⇒ Resource #query ⇒ Hash Also known as: params
148 149 150 151 152 153 154 155 156 |
# File 'lib/heartland/client/resource.rb', line 148 def query(params=nil) if params uri = self.uri.dup uri.merge_query_values!(params) clone(uri) else self.uri.query_values || {} end end |