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