class FrOData::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 FrOData::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 [FrOData::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/frodata/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/frodata/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(request_options = {})
click to toggle source
Execute the request
@param request_options [Hash] Request
options to pass to Faraday @return [FrOData::Service::Response]
# File lib/frodata/service/request.rb, line 49 def execute(request_options = {}) 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/frodata/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/frodata/service/request.rb, line 71 def connection service.connection end
default_headers()
click to toggle source
# File lib/frodata/service/request.rb, line 61 def default_headers { 'OData-Version' => '4.0' } end
headers()
click to toggle source
# File lib/frodata/service/request.rb, line 67 def headers default_headers.merge(@options[:headers] || {}) end
logger()
click to toggle source
# File lib/frodata/service/request.rb, line 75 def logger service.logger end