class Spine::Http::Request

Attributes

headers[R]
uri[R]

Public Class Methods

new(uri) click to toggle source
# File lib/spine/http/request.rb, line 9
def initialize(uri)
  @uri = URI.parse(uri)
  @headers = {}
  @payload = ''
end

Public Instance Methods

delete() click to toggle source
# File lib/spine/http/request.rb, line 52
def delete
  request = Net::HTTP::Delete.new(uri.request_uri)
  execute(request)
end
get() click to toggle source
# File lib/spine/http/request.rb, line 30
def get
  execute(Net::HTTP::Get.new(uri.request_uri))
end
header(key, value) click to toggle source
# File lib/spine/http/request.rb, line 20
def header(key, value)
  headers[key] = value
  self
end
patch() click to toggle source
# File lib/spine/http/request.rb, line 40
def patch
  request = Net::HTTP::Patch.new(uri.request_uri)
  add_payload(request)
  execute(request)
end
payload(data, content_type = ContentTypes::Plain) click to toggle source
# File lib/spine/http/request.rb, line 25
def payload(data, content_type = ContentTypes::Plain)
  @payload = content_type.dump(data)
  self
end
post() click to toggle source
# File lib/spine/http/request.rb, line 34
def post
  request = Net::HTTP::Post.new(uri.request_uri)
  add_payload(request)
  execute(request)
end
put() click to toggle source
# File lib/spine/http/request.rb, line 46
def put
  request = Net::HTTP::Put.new(uri.request_uri)
  add_payload(request)
  execute(request)
end
query(parameters) click to toggle source
# File lib/spine/http/request.rb, line 15
def query(parameters)
  uri.query = URI.encode_www_form(parameters)
  self
end

Private Instance Methods

add_headers(request) click to toggle source
# File lib/spine/http/request.rb, line 67
def add_headers(request)
  headers.each do |key, value|
    request[key] = value
  end
end
add_payload(request) click to toggle source
# File lib/spine/http/request.rb, line 59
def add_payload(request)
  if @payload.is_a?(Hash)
    request.set_form_data(@payload)
  else
    request.body = @payload
  end
end
build_connection() click to toggle source
# File lib/spine/http/request.rb, line 82
def build_connection
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = (uri.scheme == 'https')
  http
end
execute(request) click to toggle source
# File lib/spine/http/request.rb, line 73
def execute(request)
  add_headers(request)
  Response.new(http.request(request))
end
http() click to toggle source
# File lib/spine/http/request.rb, line 78
def http
  @http ||= build_connection
end