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