class GrapeClient::Connection

Attributes

headers[R]

Public Class Methods

new(user, password) click to toggle source
# File lib/grape_client/connection.rb, line 12
def initialize(user, password)
  @user = user
  @password = password
end

Public Instance Methods

request(method, url, params = {}) click to toggle source
# File lib/grape_client/connection.rb, line 17
def request(method, url, params = {})
  uri = prepare_uri(method, url, params)
  req = prepare_request(method, uri, params)

  res = Net::HTTP.start(uri.hostname, uri.port) do |http|
    http.request(req)
  end

  @headers = res.to_hash
  validate_response res
end

Private Instance Methods

connector(method) click to toggle source
# File lib/grape_client/connection.rb, line 59
def connector(method)
  case method.to_sym
  when :get     then Net::HTTP::Get
  when :put     then Net::HTTP::Put
  when :post    then Net::HTTP::Post
  when :delete  then Net::HTTP::Delete
  else raise UndefinedMethod
  end
end
prepare_request(method, uri, params = {}) click to toggle source
# File lib/grape_client/connection.rb, line 40
def prepare_request(method, uri, params = {})
  req = connector(method).new(uri)
  req.basic_auth @user, @password
  if params.any? && [:put, :post].include?(method.to_sym)
    req.set_form_data(params)
  end

  req
end
prepare_uri(method, url, params = {}) click to toggle source
# File lib/grape_client/connection.rb, line 31
def prepare_uri(method, url, params = {})
  uri = URI(url)
  if params.any? && [:get, :delete].include?(method.to_sym)
    uri.query = URI.encode_www_form(params)
  end

  uri
end
validate_response(res) click to toggle source
# File lib/grape_client/connection.rb, line 50
def validate_response(res)
  case res
  when Net::HTTPUnauthorized        then raise Unauthorized
  when Net::HTTPUnprocessableEntity then raise InvalidEntity
  when Net::HTTPSuccess             then res.body
  else raise UnknownError, res.body
  end
end