class OData4::Service::Request
Encapsulates a single request to an OData service.
Attributes
format[RW]
The request format (`:atom`, `:json`, or `:auto`)
method[RW]
The HTTP method for this request
query[R]
The OData4::Query
that generated this request (optional)
service[R]
The OData service against which the request is performed
url_chunk[R]
Public Class Methods
new(service, url_chunk, options = {})
click to toggle source
Create a new request @param service [OData4::Service] Where the request will be sent @param url_chunk
[String] Request
path, relative to the service URL, including query params @param options [Hash] Additional request options
# File lib/odata4/service/request.rb, line 18 def initialize(service, url_chunk, options = {}) @service = service @url_chunk = url_chunk @method = options.delete(:method) || :get @format = options.delete(:format) || :auto @query = options.delete(:query) @options = options end
Public Instance Methods
content_type()
click to toggle source
The content type for this request. Depends on format. @return [String]
# File lib/odata4/service/request.rb, line 35 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 = {})
click to toggle source
Execute the request
@param additional_options [Hash] Request
options to pass to Faraday @return [OData4::Service::Response]
# File lib/odata4/service/request.rb, line 49 def execute(additional_options = {}) request_options = service.options[:request].merge(additional_options) logger.info "Requesting #{method.to_s.upcase} #{url}..." Response.new(service, query) do connection.run_request(method, url_chunk, nil, headers) do |conn| conn.options.merge! request_options end end end
url()
click to toggle source
Return the full request URL (including service base) @return [String]
# File lib/odata4/service/request.rb, line 29 def url ::URI.join("#{service.service_url}/", ::URI.escape(url_chunk)).to_s end
Private Instance Methods
connection()
click to toggle source
# File lib/odata4/service/request.rb, line 64 def connection service.connection end
default_headers()
click to toggle source
# File lib/odata4/service/request.rb, line 68 def default_headers { 'Accept' => content_type, 'Content-Type' => content_type, 'OData-Version' => '4.0' } end
headers()
click to toggle source
# File lib/odata4/service/request.rb, line 76 def headers default_headers.merge(@options[:headers] || {}) end
logger()
click to toggle source
# File lib/odata4/service/request.rb, line 80 def logger service.logger end