Class: ROM::HTTP::Dataset
- Inherits:
-
Object
- Object
- ROM::HTTP::Dataset
- Includes:
- Enumerable, Options
- Defined in:
- lib/rom/http/dataset.rb,
lib/rom/http/dataset/response_transformers/schemad.rb,
lib/rom/http/dataset/response_transformers/schemaless.rb
Overview
HTTP Dataset
Represents a specific HTTP collection resource
Defined Under Namespace
Modules: ResponseTransformers
Instance Attribute Summary collapse
- #config ⇒ Object readonly
Class Method Summary collapse
- .default_request_handler(handler = Undefined) ⇒ Object
- .default_response_handler(handler = Undefined) ⇒ Object
Instance Method Summary collapse
-
#absolute_path ⇒ string
Return the dataset path.
-
#add_header(header, value) ⇒ Dataset
Return a new dataset with additional header.
-
#append_path(path) ⇒ Dataset
Return a new dataset with a modified path.
-
#delete ⇒ Array<Hash>
Perform an delete over HTTP Delete.
-
#each {|Hash| ... } ⇒ Enumerator, Array<Hash>
Iterate over each response value.
-
#headers ⇒ Hash
Return request headers.
-
#initialize(config, options = {}) ⇒ Dataset
constructor
HTTP Dataset interface.
-
#insert(params) ⇒ Array<Hash>
Perform an insert over HTTP Post.
-
#name ⇒ String
Return the dataset name.
-
#path ⇒ String
Return the dataset path.
-
#project(*args) ⇒ Dataset
Add a new set projection to the result set.
-
#response ⇒ Array<hash>
Execute the current dataset.
- #response_transformer(transformer = Undefined) ⇒ Object private
-
#update(params) ⇒ Array<Hash>
Perform an update over HTTP Put.
-
#uri ⇒ String
Return the gateway’s URI.
-
#with_headers(headers) ⇒ Dataset
Return a new dataset with given headers.
-
#with_options(opts) ⇒ Dataset
Return a new dataset with additional options.
-
#with_params(params) ⇒ Dataset
Return a new dataset with replaced request parameters.
-
#with_path(path) ⇒ Dataset
Return a new dataset with a different path.
-
#with_request_method(request_method) ⇒ Dataset
Return a new dataset with a different request method.
Constructor Details
#initialize(config, options = {}) ⇒ Dataset
HTTP Dataset interface
49 50 51 52 53 |
# File 'lib/rom/http/dataset.rb', line 49 def initialize(config, = {}) @config = config @response_transformer = ResponseTransformers::Schemaless.new super() end |
Instance Attribute Details
#config ⇒ Object (readonly)
16 17 18 |
# File 'lib/rom/http/dataset.rb', line 16 def config @config end |
Class Method Details
.default_request_handler(handler = Undefined) ⇒ Object
25 26 27 28 |
# File 'lib/rom/http/dataset.rb', line 25 def default_request_handler(handler = Undefined) return @default_request_handler if Undefined === handler @default_request_handler = handler end |
.default_response_handler(handler = Undefined) ⇒ Object
30 31 32 33 |
# File 'lib/rom/http/dataset.rb', line 30 def default_response_handler(handler = Undefined) return @default_response_handler if Undefined === handler @default_response_handler = handler end |
Instance Method Details
#absolute_path ⇒ string
Return the dataset path
129 130 131 |
# File 'lib/rom/http/dataset.rb', line 129 def absolute_path '/' + path end |
#add_header(header, value) ⇒ Dataset
Return a new dataset with additional header
165 166 167 |
# File 'lib/rom/http/dataset.rb', line 165 def add_header(header, value) with_headers(headers.merge(header => value)) end |
#append_path(path) ⇒ Dataset
Return a new dataset with a modified path
226 227 228 |
# File 'lib/rom/http/dataset.rb', line 226 def append_path(path) (path: [:path] + '/' + path) end |
#delete ⇒ Array<Hash>
Perform an delete over HTTP Delete
307 308 309 310 311 |
# File 'lib/rom/http/dataset.rb', line 307 def delete ( request_method: :delete ).response end |
#each {|Hash| ... } ⇒ Enumerator, Array<Hash>
Iterate over each response value
268 269 270 271 |
# File 'lib/rom/http/dataset.rb', line 268 def each(&block) return to_enum unless block_given? response.each(&block) end |
#headers ⇒ Hash
Return request headers
Merges default headers from the Gateway configuration and the current Dataset
94 95 96 |
# File 'lib/rom/http/dataset.rb', line 94 def headers config.fetch(:headers, {}).merge(.fetch(:headers, {})) end |
#insert(params) ⇒ Array<Hash>
Perform an insert over HTTP Post
280 281 282 283 284 285 |
# File 'lib/rom/http/dataset.rb', line 280 def insert(params) ( request_method: :post, params: params ).response end |
#name ⇒ String
Return the dataset name
103 104 105 |
# File 'lib/rom/http/dataset.rb', line 103 def name config[:name].to_s end |
#path ⇒ String
Return the dataset path
116 117 118 |
# File 'lib/rom/http/dataset.rb', line 116 def path [:path].to_s.sub(%r{\A/}, '') end |
#project(*args) ⇒ Dataset
Add a new set projection to the result set
192 193 194 195 196 197 198 |
# File 'lib/rom/http/dataset.rb', line 192 def project(*args) projections = args.first.is_a?(::Array) ? args.first : args ( projections: (self.projections + projections) ) end |
#response ⇒ Array<hash>
Execute the current dataset
318 319 320 321 322 323 |
# File 'lib/rom/http/dataset.rb', line 318 def response response_transformer.call( response_handler.call(request_handler.call(self), self), self ) end |
#response_transformer ⇒ Object #response_transformer(transformer) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
64 65 66 67 |
# File 'lib/rom/http/dataset.rb', line 64 def response_transformer(transformer = Undefined) return @response_transformer if Undefined === transformer @response_transformer = transformer end |
#update(params) ⇒ Array<Hash>
Perform an update over HTTP Put
294 295 296 297 298 299 |
# File 'lib/rom/http/dataset.rb', line 294 def update(params) ( request_method: :put, params: params ).response end |
#uri ⇒ String
Return the gateway’s URI
76 77 78 |
# File 'lib/rom/http/dataset.rb', line 76 def uri config.fetch(:uri) { fail Error, ':uri configuration missing' } end |
#with_headers(headers) ⇒ Dataset
this replaces the dataset’s currently configured headers. To non-destructively add a new header, use ‘#add_header`
Return a new dataset with given headers
148 149 150 |
# File 'lib/rom/http/dataset.rb', line 148 def with_headers(headers) __new__(config, .merge(headers: headers)) end |
#with_options(opts) ⇒ Dataset
Return a new dataset with additional options
176 177 178 |
# File 'lib/rom/http/dataset.rb', line 176 def (opts) __new__(config, .merge(opts)) end |
#with_params(params) ⇒ Dataset
Return a new dataset with replaced request parameters
256 257 258 |
# File 'lib/rom/http/dataset.rb', line 256 def with_params(params) (params: params) end |
#with_path(path) ⇒ Dataset
Return a new dataset with a different path
211 212 213 |
# File 'lib/rom/http/dataset.rb', line 211 def with_path(path) (path: path) end |
#with_request_method(request_method) ⇒ Dataset
Return a new dataset with a different request method
240 241 242 |
# File 'lib/rom/http/dataset.rb', line 240 def with_request_method(request_method) (request_method: request_method) end |