Class: Hoodoo::Services::Request

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

Constructor Details

#initializeRequest

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.embeds              = []
  self.references          = []
  self.headers             = {}.freeze
end

Instance Attribute Details

#bodyObject

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

#embedsObject

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
  @embeds
end

#headersObject

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

#identObject (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

#listObject

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

#localeObject

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

#referencesObject

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_componentsObject

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_extensionObject

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