class Oshpark::Connection
Attributes
api_endpoint[RW]
Public Class Methods
new(endpoint_url)
click to toggle source
# File lib/oshpark/connection.rb, line 14 def initialize endpoint_url self.api_endpoint = endpoint_url end
Public Instance Methods
request(method, endpoint, params={})
click to toggle source
# File lib/oshpark/connection.rb, line 18 def request method, endpoint, params={}, token method = method[0].upcase + method[1..-1] uri = uri_for endpoint http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true if uri.port == 443 request = Net::HTTP.const_get(method).new(uri.path) default_headers(token).each do |header, value| request[header] = value end if params.keys.include? :file boundary = MicroToken.generate 20 request.body = "--#{boundary}\r\n" + params.to_multipart.join('--' + boundary + "\r\n") + "--#{boundary}--\r\n" request['Content-Type'] = "multipart/form-data; boundary=#{boundary}" else request.body = params.to_query end response = http.request(request) json = if response.body.size >= 2 JSON.parse(response.body) else {} end case response.code.to_i when 401 raise Unauthorized, json['error'] when 404 raise NotFound, json['error'] when 422 raise Unprocessable, json['error'] when 400...499 raise HttpError, json['error'] when 500...599 raise ServerError, json['error'] end json rescue JSON::ParserError => e raise ServerError, "Bad response from server: #{e.message}" end
Private Instance Methods
default_headers(token=nil)
click to toggle source
# File lib/oshpark/connection.rb, line 77 def default_headers token=nil header = { 'Accept' => 'application/json', # 'Content-Type' => 'application/json' } header['Authorization'] = token.token if token header end
prepare_params(params)
click to toggle source
# File lib/oshpark/connection.rb, line 86 def prepare_params params if params.keys.include? :file params.to_multipart else params.to_query end end
uri_for(endpoint)
click to toggle source
# File lib/oshpark/connection.rb, line 73 def uri_for endpoint URI("#{api_endpoint}/#{endpoint}") end