module ClioClient::Http

Public Instance Methods

base_uri(path, params = {}) click to toggle source
# File lib/clio_client/http.rb, line 11
def base_uri(path, params = {})
  uri = URI.parse(self.base_scope_url)
  uri.path = path
  uri.query = URI.encode_www_form(params) if params.any?
  uri
end
delete(path, params = {}, parse=true) click to toggle source
# File lib/clio_client/http.rb, line 46
def delete(path, params = {}, parse=true)
  uri = base_uri("#{api_prefix}/#{path}", params)
  req = Net::HTTP::Delete.new(uri.request_uri)
  make_api_request(req, uri, parse)
end
get(path, params ={}, parse=true) click to toggle source
# File lib/clio_client/http.rb, line 18
def get(path, params ={}, parse=true)
  uri = base_uri("#{api_prefix}/#{path}", params)
  req = Net::HTTP::Get.new(uri.request_uri)
  make_api_request(req, uri, parse)
end
make_api_request(req, uri, parse = true) click to toggle source
# File lib/clio_client/http.rb, line 52
def make_api_request(req, uri, parse = true)
  raise ClioClient::Unauthorized if self.access_token.nil? || self.access_token.empty?
  req.add_field("Authorization", "Bearer #{self.access_token}")
  make_request(req, uri, parse)
end
make_request(req, uri, parse = true) click to toggle source
# File lib/clio_client/http.rb, line 58
def make_request(req, uri, parse = true)
  req.add_field("Accept", "text/json")
  n = Net::HTTP.new(uri.host, uri.port)
  n.use_ssl = uri.scheme == 'https'
  res = n.start do |http|
    http.request(req)
  end
  parse_response(res, parse)
end
multipart_post(path, params, parse = true) click to toggle source
# File lib/clio_client/http.rb, line 32
def multipart_post(path, params, parse = true)
  uri = base_uri("#{api_prefix}/#{path}")        
  req = Net::HTTP::Post::Multipart.new(uri.request_uri, params)
  make_api_request(req, uri, parse)
end
parse_response(res, parse) click to toggle source
# File lib/clio_client/http.rb, line 68
def parse_response(res, parse)
  case res
  when Net::HTTPNotFound
    raise ClioClient::ResourceNotFound.new(parse ? parse_body(res.body)["message"] : "")
  when Net::HTTPSuccess
    parse ? parse_body(res.body) : res.body
  when Net::HTTPUnauthorized
    begin
      message = parse_body(res.body)["message"]
    rescue JSON::ParserError
      message = res.body
    end
    raise ClioClient::Unauthorized.new(message)
  when Net::HTTPBadRequest
    raise ClioClient::BadRequest.new(parse_body(res.body)["message"])
  when Net::HTTPSeeOther
    res["Location"]
  when Net::HTTPForbidden
    raise ClioClient::Forbidden.new(res.body)
  else
    raise UnknownResponse.new(res.body)
  end
end
post(path, body ="", parse = true) click to toggle source
# File lib/clio_client/http.rb, line 38
def post(path, body ="", parse = true)
  uri = base_uri("#{api_prefix}/#{path}")        
  req = Net::HTTP::Post.new(uri.request_uri)
  req.body = body
  req.add_field("Content-Type", "application/json")
  make_api_request(req, uri, parse)
end
put(path, body = "", parse=true) click to toggle source
# File lib/clio_client/http.rb, line 24
def put(path, body = "", parse=true)
  uri = base_uri("#{api_prefix}/#{path}")        
  req = Net::HTTP::Put.new(uri.request_uri)
  req.body = body
  req.add_field("Content-Type", "application/json")
  make_api_request(req, uri, parse)
end

Private Instance Methods

api_prefix() click to toggle source
# File lib/clio_client/http.rb, line 98
def api_prefix; "/api/v2"; end
parse_body(body) click to toggle source
# File lib/clio_client/http.rb, line 93
def parse_body(body)
  if body !~ /^\s*$/ && !body.nil?
    JSON.parse(body)
  end
end