class LightspeedRestaurantClient::Request
Constants
- STAGING_URL
Attributes
base_uri[R]
body[R]
connection[R]
headers[R]
logger[R]
path[R]
query[R]
token[R]
Public Class Methods
new(base_uri, path, token, body = {}, query = {}, logger = nil)
click to toggle source
# File lib/lightspeed_restaurant/request.rb, line 17 def initialize(base_uri, path, token, body = {}, query = {}, logger = nil) @base_uri = base_uri || STAGING_URL @headers = { 'Content-Type' => 'application/json', 'X-Auth-Token' => token } @body = body.to_json @query = query @path = '/PosServer' + path @connection = Excon.new(@base_uri) @logger = logger || begin require 'logger' ::Logger.new($stdout) end end
Public Instance Methods
perform(**args)
click to toggle source
# File lib/lightspeed_restaurant/request.rb, line 30 def perform(**args) log_request(args[:method]) response = connection.request(args.merge(path: path, headers: headers, body: body, query: query)) if [200, 201].include?(response.status) response.body else handle_error(response) end end
Private Instance Methods
authentication_error(response)
click to toggle source
# File lib/lightspeed_restaurant/request.rb, line 84 def authentication_error(response) AuthenticationError.new(JSON.parse(response.body)['description'], response.status, response.body, response.headers) end
handle_error(response)
click to toggle source
# File lib/lightspeed_restaurant/request.rb, line 48 def handle_error(response) logger.error('response') { "Error : #{response.status} #{response.body}" } case response.status when 400 raise invalid_request_error(response) when 401 raise authentication_error(response) when 403 raise unauthorized_error(response) when 404 raise not_found_error(response) when 429 raise rate_limit_error(response) else raise response_object_error(response) end end
invalid_request_error(response)
click to toggle source
# File lib/lightspeed_restaurant/request.rb, line 79 def invalid_request_error(response) InvalidRequestError.new(JSON.parse(response.body)['description'], response.status, response.body, response.headers) end
log_request(http_method)
click to toggle source
# File lib/lightspeed_restaurant/request.rb, line 42 def log_request(http_method) logger.info('request') do "#{http_method} #{base_uri}#{path} : #{query} - #{body}" end end
not_found_error(response)
click to toggle source
# File lib/lightspeed_restaurant/request.rb, line 70 def not_found_error(response) NotFoundError.new('Resource not found', response.status, response.body, response.headers) end
rate_limit_error(response)
click to toggle source
# File lib/lightspeed_restaurant/request.rb, line 89 def rate_limit_error(response) RateLimitError.new(JSON.parse(response.body)['description'], response.status, response.body, response.headers) end
response_object_error(response)
click to toggle source
# File lib/lightspeed_restaurant/request.rb, line 74 def response_object_error(response) APIError.new("Invalid response object from API: #{JSON.parse(response.body)['description']}", response.status, response.body, response.headers) end