class Rubhttp::Request

Attributes

body[R]

@return [Body]

headers[R]

@return [Headers]

uri[R]

@return [Uri]

verb[R]

@return [String]

Public Class Methods

new(options) click to toggle source

@option options [#to_s] :verb @option options [String] :uri @option options [Hash] :params @option options [Hash] :headers @option options [String, IO] :body @option options [Hash] :form @option options [Hash] :json

# File lib/rubhttp/request.rb, line 24
def initialize(options)
  verb = options.fetch(:verb).to_s
  uri = options.fetch(:uri)
  params = options[:params] || {}
  headers = options[:headers] || {}
  body = options.slice(:body, :form, :json)

  @verb = verb.downcase.to_sym
  @uri = build_request_uri(uri, params)
  @headers = build_request_headers(headers)
  @body = build_request_body(body)
end

Public Instance Methods

inspect() click to toggle source

Returns human-readable representation of `self` instance.

@return [String]

# File lib/rubhttp/request.rb, line 40
def inspect
  "#<#{self.class} #{verb.to_s.upcase} #{uri}>"
end

Private Instance Methods

build_request_body(body) click to toggle source
# File lib/rubhttp/request.rb, line 59
def build_request_body(body)
  Body.new(body)
end
build_request_headers(headers) click to toggle source
# File lib/rubhttp/request.rb, line 53
def build_request_headers(headers)
  request_headers = Headers.new
  headers.each { |k, v| request_headers[k] = v }
  request_headers
end
build_request_uri(uri, params) click to toggle source
# File lib/rubhttp/request.rb, line 46
def build_request_uri(uri, params)
  request_uri = Uri.parse(uri)
  request_uri.query_values = request_uri.query_values(Array).to_a.concat(params.to_a) unless params.empty?
  request_uri.path = '/' if request_uri.path.empty?
  request_uri
end