class PayrollHero::Api::Client
Attributes
client[R]
Public Class Methods
new(token, base_url)
click to toggle source
# File lib/payroll_hero/api/client.rb, line 11 def initialize(token, base_url) headers = { 'User-Agent' => user_agent_string, } params = { token: token, } @client = Faraday.new(url: base_url) do |faraday| faraday.request :url_encoded faraday.response :logger if PayrollHero::Api.debug faraday.use FaradayMiddleware::Mashify faraday.response :json, content_type: /\bjson$/ faraday.headers.merge! headers faraday.params.merge! params faraday.adapter Faraday.default_adapter end end
Public Instance Methods
delete(path, params = {})
click to toggle source
# File lib/payroll_hero/api/client.rb, line 44 def delete(path, params = {}) do_request(:delete, path, params) end
get(path, params = {})
click to toggle source
# File lib/payroll_hero/api/client.rb, line 32 def get(path, params = {}) do_request(:get, path, params) end
head(path, params = {})
click to toggle source
# File lib/payroll_hero/api/client.rb, line 48 def head(path, params = {}) do_request(:head, path, params) end
options(path, params = {})
click to toggle source
# File lib/payroll_hero/api/client.rb, line 56 def options(path, params = {}) do_request(:options, path, params) end
patch(path, params = {})
click to toggle source
# File lib/payroll_hero/api/client.rb, line 52 def patch(path, params = {}) do_request(:patch, path, params) end
post(path, params = {})
click to toggle source
# File lib/payroll_hero/api/client.rb, line 36 def post(path, params = {}) do_request(:post, path, params) end
put(path, params = {})
click to toggle source
# File lib/payroll_hero/api/client.rb, line 40 def put(path, params = {}) do_request(:put, path, params) end
Private Instance Methods
do_request(method, path, params)
click to toggle source
# File lib/payroll_hero/api/client.rb, line 62 def do_request(method, path, params) response = wrap_request { client.public_send(method, path, params) } validate_response(response) response.body end
error_from(response)
click to toggle source
# File lib/payroll_hero/api/client.rb, line 68 def error_from(response) klass = { 400 => Errors::BadRequest, 401 => Errors::Unauthorized, 403 => Errors::Forbidden, 404 => Errors::NotFound, 405 => Errors::MethodNotAllowed, 406 => Errors::NotAcceptable, 422 => Errors::UnprocessableEntity, 500 => Errors::InternalServerError, }[response.status] || Errors::ServerReturnedError case response.body when Hash if response.body['error'] && response.body['error_description'] raise klass.new(response.body['error'], response.body['error_description']) else raise klass.new('unknown', response.body.inspect) end else raise klass.new("unknown: #{response.status}", response.body) end end
user_agent_string()
click to toggle source
# File lib/payroll_hero/api/client.rb, line 108 def user_agent_string if PayrollHero::Api.application_name != :none "#{PayrollHero::Api.application_name} (PayrollHero::Api #{PayrollHero::Api::VERSION})" else "(PayrollHero::Api #{PayrollHero::Api::VERSION})" end end
validate_response(response)
click to toggle source
# File lib/payroll_hero/api/client.rb, line 95 def validate_response(response) case response.status when 400..499, 500..599 raise error_from(response) when 200..299 # All success status codes, some are important, but should have already been handled by # the underlying protocol return else raise UnexpectedResponse, "Unexpected response status: #{response.status}" end end
wrap_request() { || ... }
click to toggle source
# File lib/payroll_hero/api/client.rb, line 116 def wrap_request with_retries(max_tries: 3) { yield } end