class Tosuto::API
Constants
- DEFAULT_HOST
Public Class Methods
new(host = DEFAULT_HOST)
click to toggle source
# File lib/tosuto/api.rb, line 45 def initialize(host = DEFAULT_HOST) @host = host end
Public Instance Methods
request(method, endpoint, body: nil, params: {}, headers: {}, token: nil, restaurant_id: nil)
click to toggle source
# File lib/tosuto/api.rb, line 49 def request(method, endpoint, body: nil, params: {}, headers: {}, token: nil, restaurant_id: nil) uri = build_uri(endpoint, params) http_start(uri) { |http| http.request( build_request( method, uri, body: body, headers: headers, token: token, restaurant_id: restaurant_id, ) ) } end
Private Instance Methods
build_request(method, uri, body: nil, headers: {}, token: nil, restaurant_id: nil)
click to toggle source
# File lib/tosuto/api.rb, line 75 def build_request(method, uri, body: nil, headers: {}, token: nil, restaurant_id: nil) method_class = case method when :get Net::HTTP::Get when :post Net::HTTP::Post end method_class.new(uri.request_uri).tap { |r| headers.each do |key, value| r.add_field(key, value) end r.add_field "Accept", "application/json" unless token.nil? access_token = token.is_a?(OauthToken) ? token.access_token : token r.add_field "Authorization", "Bearer #{access_token}" end unless restaurant_id.nil? r.add_field "Toast-Restaurant-External-ID", restaurant_id end if body.is_a? String r.body = body elsif !body.nil? r.add_field "Content-Type", "application/json" r.body = body.to_json end } end
build_uri(endpoint, params = nil)
click to toggle source
# File lib/tosuto/api.rb, line 67 def build_uri(endpoint, params = nil) URI.parse("#{@host}#{endpoint}").tap { |uri| next if params.nil? uri.query = Resource.encode_form_data(params) } end
http_opts()
click to toggle source
# File lib/tosuto/api.rb, line 108 def http_opts { use_ssl: true } end
http_start(uri, &block)
click to toggle source
# File lib/tosuto/api.rb, line 104 def http_start(uri, &block) Response.new(Net::HTTP.start(uri.host, uri.port, http_opts, &block)) end