class Iugu::APIRequest
Public Class Methods
request(method, url, data = {})
click to toggle source
# File lib/iugu/api_request.rb, line 10 def self.request(method, url, data = {}) Iugu::Utils.auth_from_env if Iugu.api_key.nil? raise Iugu::AuthenticationException, "Chave de API não configurada. Utilize Iugu.api_key = ... para configurar." if Iugu.api_key.nil? handle_response self.send_request method, url, data end
Private Class Methods
build_request(method, url, data)
click to toggle source
# File lib/iugu/api_request.rb, line 28 def self.build_request(method, url, data) { verify_ssl: true, headers: default_headers, method: method, payload: data.to_json, url: url, timeout: 30 } end
default_headers()
click to toggle source
# File lib/iugu/api_request.rb, line 48 def self.default_headers { authorization: 'Basic ' + Base64.encode64(Iugu.api_key + ":"), accept: 'application/json', accept_charset: 'utf-8', user_agent: 'Iugu RubyLibrary', accept_language: 'pt-br;q=0.9,pt-BR', #content_type: 'application/x-www-form-urlencoded; charset=utf-8' content_type: 'application/json; charset=utf-8' } end
handle_response(response)
click to toggle source
# File lib/iugu/api_request.rb, line 39 def self.handle_response(response) response_json = JSON.parse(response.body) raise ObjectNotFound if response_json.is_a?(Hash) && response_json['errors'] == "Not Found" raise RequestWithErrors, response_json['errors'] if response_json.is_a?(Hash) && response_json['errors'] && response_json['errors'].length > 0 response_json rescue JSON::ParserError raise RequestFailed end
send_request(method, url, data)
click to toggle source
# File lib/iugu/api_request.rb, line 18 def self.send_request(method, url, data) RestClient::Request.execute build_request(method, url, data) rescue RestClient::ResourceNotFound raise ObjectNotFound rescue RestClient::UnprocessableEntity => ex raise RequestWithErrors.new JSON.parse(ex.response)['errors'] rescue RestClient::BadRequest => ex raise RequestWithErrors.new JSON.parse(ex.response)['errors'] end