class ReactiveShipping::Liftoff
Constants
- JSON_HEADERS
- REACTIVE_FREIGHT_CARRIER
Public Instance Methods
base_url()
click to toggle source
# File lib/reactive_freight/platforms/liftoff.rb, line 77 def base_url "https://#{@conf.dig(:api, :domain)}#{@conf.dig(:api, :prefix)}#{@conf.dig(:api, :scope, @options[:scope])}" end
build_request(action, options = {})
click to toggle source
# File lib/reactive_freight/platforms/liftoff.rb, line 39 def build_request(action, options = {}) options = @options.merge(options) headers = JSON_HEADERS headers = headers.merge(options[:headers]) unless options[:headers].blank? body = options[:body].to_json unless options[:body].blank? unless action == :authenticate set_auth_token headers = headers.merge(token) end request = { url: build_url(action, options), headers: headers, method: @conf.dig(:api, :methods, action), body: body } save_request(request) request end
build_url(action, options = {})
click to toggle source
protected
# File lib/reactive_freight/platforms/liftoff.rb, line 30 def build_url(action, options = {}) options = @options.merge(options) url = ''.dup url += "#{base_url}#{@conf.dig(:api, :scopes, options[:scope])}#{@conf.dig(:api, :endpoints, action)}" url = url.sub(@conf.dig(:api, :scopes, options[:scope]), '') if action == :authenticate url += options[:params] unless options[:params].blank? url end
commit(request)
click to toggle source
# File lib/reactive_freight/platforms/liftoff.rb, line 61 def commit(request) url = request[:url] headers = request[:headers] method = request[:method] body = request[:body] response = case method when :post HTTParty.post(url, headers: headers, body: body) else HTTParty.get(url, headers: headers) end JSON.parse(response.body) if response&.body end
requirements()
click to toggle source
# File lib/reactive_freight/platforms/liftoff.rb, line 13 def requirements %i[email password scope] end
set_auth_token()
click to toggle source
# File lib/reactive_freight/platforms/liftoff.rb, line 81 def set_auth_token return @auth_token unless @auth_token.blank? request = build_request( :authenticate, body: { email: @options[:email], password: @options[:password] } ) response = commit(request) @auth_token = response.dig('auth_token') end
show(id)
click to toggle source
Rates
# File lib/reactive_freight/platforms/liftoff.rb, line 21 def show(id) request = build_request(:show, params: "/#{id}") commit(request) end
token()
click to toggle source
# File lib/reactive_freight/platforms/liftoff.rb, line 96 def token { 'Authorization': "Bearer #{@auth_token}" } end