class Workarea::Orderbot::Gateway

Attributes

options[R]

Public Class Methods

new(options = {}) click to toggle source
# File lib/workarea/orderbot/gateway.rb, line 7
def initialize(options = {})
  requires!(options, :api_user_name, :api_password)
  @options = options
end

Public Instance Methods

create_order(attrs = {}) click to toggle source
# File lib/workarea/orderbot/gateway.rb, line 39
def create_order(attrs = {})
  response = connection.post do |req|
    req.url "orders"
    req.body = attrs.to_json
  end

  Orderbot::Response.new(response)
end
get_fulfillments(attrs = {}) click to toggle source
# File lib/workarea/orderbot/gateway.rb, line 48
def get_fulfillments(attrs = {})
  response = connection.get do |req|
    req.options.params_encoder = Faraday::FlatParamsEncoder
    req.url "fulfillments"
    req.params = attrs
  end

  Orderbot::Response.new(response)
end
get_inventory(attrs = {}) click to toggle source
# File lib/workarea/orderbot/gateway.rb, line 21
def get_inventory(attrs = {})
  response = connection.get do |req|
    req.options.params_encoder = Faraday::FlatParamsEncoder
    req.url "inventory"
    req.params = attrs
  end
  Orderbot::Response.new(response)
end
get_pricing(attrs = {}) click to toggle source
# File lib/workarea/orderbot/gateway.rb, line 30
def get_pricing(attrs = {})
  response = connection.get do |req|
    req.options.params_encoder = Faraday::FlatParamsEncoder
    req.url "pricing"
    req.params = attrs
  end
  Orderbot::Response.new(response)
end
get_products(attrs = {}) click to toggle source
# File lib/workarea/orderbot/gateway.rb, line 12
def get_products(attrs = {})
  response = connection.get do |req|
    req.options.params_encoder = Faraday::FlatParamsEncoder
    req.url "products"
    req.params = attrs
  end
  Orderbot::Response.new(response)
end

Private Instance Methods

connection() click to toggle source
# File lib/workarea/orderbot/gateway.rb, line 60
def connection
  headers = {
    "Content-Type"  => "application/json",
    "Accept"        => "application/json",
    'Authorization' => "Bearer #{token}"
  }

  request_timeouts = {
    timeout: Workarea.config.orderbot[:api_timeout],
    open_timeout: Workarea.config.orderbot[:open_timeout]
  }

  Faraday.new(url: rest_endpoint, headers: headers, request: request_timeouts)
end
requires!(hash, *params) click to toggle source
# File lib/workarea/orderbot/gateway.rb, line 88
def requires!(hash, *params)
  params.each do |param|
    if param.is_a?(Array)
      raise ArgumentError.new("Missing required parameter: #{param.first}") unless hash.has_key?(param.first)

      valid_options = param[1..-1]
      raise ArgumentError.new("Parameter: #{param.first} must be one of #{valid_options.to_sentence(words_connector: 'or')}") unless valid_options.include?(hash[param.first])
    else
      raise ArgumentError.new("Missing required parameter: #{param}") unless hash.has_key?(param)
    end
  end
end
rest_endpoint() click to toggle source
# File lib/workarea/orderbot/gateway.rb, line 76
def rest_endpoint
  if test?
    "https://staging-api-core.devbot.ca"
  else
    "https://api-beta.orderbot.com"
  end
end
test?() click to toggle source
# File lib/workarea/orderbot/gateway.rb, line 84
def test?
  (options.has_key?(:test) ? options[:test] : false)
end