Class: OData4::Service::Request
- Inherits:
-
Object
- Object
- OData4::Service::Request
- Defined in:
- lib/odata4/service/request.rb
Overview
Encapsulates a single request to an OData service.
Instance Attribute Summary collapse
-
#format ⇒ Object
The request format (‘:atom`, `:json`, or `:auto`).
-
#method ⇒ Object
The HTTP method for this request.
-
#query ⇒ Object
readonly
The OData4::Query that generated this request (optional).
-
#service ⇒ Object
readonly
The OData service against which the request is performed.
Instance Method Summary collapse
-
#content_type ⇒ String
The content type for this request.
-
#execute(additional_options = {}) ⇒ OData4::Service::Response
Execute the request.
-
#initialize(service, url_chunk, options = {}) ⇒ Request
constructor
Create a new request.
-
#url ⇒ String
Return the full request URL (including service base).
Constructor Details
#initialize(service, url_chunk, options = {}) ⇒ Request
Create a new request
18 19 20 21 22 23 24 |
# File 'lib/odata4/service/request.rb', line 18 def initialize(service, url_chunk, = {}) @service = service @url_chunk = url_chunk @method = [:method] || :get @format = [:format] || :auto @query = [:query] end |
Instance Attribute Details
#format ⇒ Object
The request format (‘:atom`, `:json`, or `:auto`)
12 13 14 |
# File 'lib/odata4/service/request.rb', line 12 def format @format end |
#method ⇒ Object
The HTTP method for this request
10 11 12 |
# File 'lib/odata4/service/request.rb', line 10 def method @method end |
#query ⇒ Object (readonly)
The OData4::Query that generated this request (optional)
8 9 10 |
# File 'lib/odata4/service/request.rb', line 8 def query @query end |
#service ⇒ Object (readonly)
The OData service against which the request is performed
6 7 8 |
# File 'lib/odata4/service/request.rb', line 6 def service @service end |
Instance Method Details
#content_type ⇒ String
The content type for this request. Depends on format.
34 35 36 37 38 39 40 41 42 |
# File 'lib/odata4/service/request.rb', line 34 def content_type if format == :auto MIME_TYPES.values.join(',') elsif MIME_TYPES.has_key? format MIME_TYPES[format] else raise ArgumentError, "Unknown format '#{format}'" end end |
#execute(additional_options = {}) ⇒ OData4::Service::Response
Execute the request
48 49 50 51 52 53 54 55 |
# File 'lib/odata4/service/request.rb', line 48 def execute( = {}) = () request = ::Typhoeus::Request.new(url, ) logger.info "Requesting #{method.to_s.upcase} #{url}..." request.run Response.new(service, request.response, query) end |
#url ⇒ String
Return the full request URL (including service base)
28 29 30 |
# File 'lib/odata4/service/request.rb', line 28 def url ::URI.join("#{service.service_url}/", ::URI.escape(url_chunk)).to_s end |