class Professionali::ApiCore
Attributes
token[RW]
Public Class Methods
new(token)
click to toggle source
# File lib/professionali/api_core.rb, line 5 def initialize token @token = token end
Public Instance Methods
api_call(path, method = "get", params = {})
click to toggle source
# File lib/professionali/api_core.rb, line 9 def api_call path, method = "get", params = {} params = params.merge(access_token: @token) begin case method when "get" response = RestClient.get api_url(path), params: params when "put" response = RestClient.put api_url(path), params: params, accept: :json when "post" response = RestClient.post api_url(path), params: params, accept: :json else response = RestClient.send method, api_url(path), params: params end rescue => e raise_errors e.response end Professionali::Mash.from_json response.body end
get()
click to toggle source
# File lib/professionali/api_core.rb, line 51 def get :get end
post()
click to toggle source
# File lib/professionali/api_core.rb, line 47 def post :post end
raise_errors(response)
click to toggle source
# File lib/professionali/api_core.rb, line 29 def raise_errors response case response.code.to_i when 400 data = Mash.from_json(response.body) raise Professionali::Errors::GeneralError.new(data), "(#{data.status}): #{data.message}" when 403 raise Professionali::Errors::AccessDeniedError, "(#{response.code}): #{response.message}" when 405, 401 raise Professionali::Errors::UnauthorizedError, "(#{response.code}): #{response.message}" when 404 raise Professionali::Errors::NotFoundError, "(#{response.code}): #{response.message}" when 500 raise Professionali::Errors::InformWhitLiError, "Professionali had an internal error. (#{response.code}): #{response.message}" when 502..503 raise Professionali::Errors::UnavailableError, "(#{response.code}): #{response.message}" end end
Private Instance Methods
api_url(path)
click to toggle source
# File lib/professionali/api_core.rb, line 57 def api_url(path) [Professionali::Config::API_URL, "v#{Professionali::Config::API_VERSION}", path].join("/") end