Class: Hoodoo::Services::Request
- Inherits:
-
Object
- Object
- Hoodoo::Services::Request
- Defined in:
- lib/hoodoo/services/services/request.rb
Overview
Instances of the Hoodoo::Services::Request class are passed to service interface implementations when requests come in via Rack, after basic checks have been passed and a particular interface implementation has been identified by endpoint.
Descriptions of default values expected out of accessors herein refer to the use case when driven through Hoodoo::Services::Middleware. If the class is instantiated “bare” it gains no default values at all (all read accessors would report nil
).
Defined Under Namespace
Classes: ListParameters
Instance Attribute Summary collapse
-
#body ⇒ Object
Parsed payload hash, for create and update actions only; else
nil
. -
#embeds ⇒ Object
Array of strings giving requested embedded items; [] if there are none requested.
-
#headers ⇒ Object
Hash of HTTP headers in Rack format - e.g.
-
#ident ⇒ Object
readonly
The first entry in the #uri_path_components array, or
nil
if the array is empty. -
#list ⇒ Object
The Hoodoo::Services::Request::ListParameters instance associated with this request.
-
#locale ⇒ Object
Requested locale for internationalised operations; “en-nz” by default.
-
#references ⇒ Object
Array of strings giving requested referenced items; [] if there are none requested.
-
#uri_path_components ⇒ Object
An array of zero or more path components making up the URI after the service endpoint has been accounted for.
-
#uri_path_extension ⇒ Object
A filename extension on the URI path component, if any, else an empty string.
Instance Method Summary collapse
-
#initialize ⇒ Request
constructor
Set up defaults in this instance.
Constructor Details
#initialize ⇒ Request
Set up defaults in this instance.
255 256 257 258 259 260 261 262 263 |
# File 'lib/hoodoo/services/services/request.rb', line 255 def initialize self.locale = 'en-nz' self.uri_path_components = [] self.uri_path_extension = '' self.list = Hoodoo::Services::Request::ListParameters.new self. = [] self.references = [] self.headers = {}.freeze end |
Instance Attribute Details
#body ⇒ Object
Parsed payload hash, for create and update actions only; else nil
.
167 168 169 |
# File 'lib/hoodoo/services/services/request.rb', line 167 def body @body end |
#embeds ⇒ Object
Array of strings giving requested embedded items; [] if there are none requested.
246 247 248 |
# File 'lib/hoodoo/services/services/request.rb', line 246 def @embeds end |
#headers ⇒ Object
Hash of HTTP headers in Rack format - e.g. HTTP_X_INTERACTION_ID
for the “X-Interaction-ID” header, for read-only use. All keys are in upper case, are Strings, have “HTTP_” at the start and use underscores where the original request might’ve used an underscore or hyphen. The usual curious Rack exceptions of CONTENT_TYPE
and CONTENT_LENGTH
do apply, though. This is a superset of header values including those sent by the client in its request and anything Rack itself might have added.
163 164 165 |
# File 'lib/hoodoo/services/services/request.rb', line 163 def headers @headers end |
#ident ⇒ Object (readonly)
The first entry in the #uri_path_components array, or nil
if the array is empty. This supports a common case for inter-resource calls where a UUID or other unique identifier is provided through the first path element (“.../v1/resource/uuid
”).
205 206 207 |
# File 'lib/hoodoo/services/services/request.rb', line 205 def ident @ident end |
#list ⇒ Object
The Hoodoo::Services::Request::ListParameters instance associated with this request.
222 223 224 |
# File 'lib/hoodoo/services/services/request.rb', line 222 def list @list end |
#locale ⇒ Object
Requested locale for internationalised operations; “en-nz” by default.
148 149 150 |
# File 'lib/hoodoo/services/services/request.rb', line 148 def locale @locale end |
#references ⇒ Object
Array of strings giving requested referenced items; [] if there are none requested.
251 252 253 |
# File 'lib/hoodoo/services/services/request.rb', line 251 def references @references end |
#uri_path_components ⇒ Object
An array of zero or more path components making up the URI after the service endpoint has been accounted for. For example, with a service endpoint of “products”, this URI:
http://test.com/v1/products/1234/foo.json
…would lead to this path component array:
[ '1234', 'foo' ]
The first element of the path components array is exposed in the read-only #ident accessor.
182 183 184 |
# File 'lib/hoodoo/services/services/request.rb', line 182 def uri_path_components @uri_path_components end |
#uri_path_extension ⇒ Object
A filename extension on the URI path component, if any, else an empty string. The first dot in the last path component is looked for (see also #uri_path_components), so for example this URI:
http://test.com/v1/products/1.2.3.4/foo.my.tar.gz
…would lead to this URI path extension string:
'my.tar.gz'
217 218 219 |
# File 'lib/hoodoo/services/services/request.rb', line 217 def uri_path_extension @uri_path_extension end |