class Shydra::Request

Constants

SHOPIFY_API_MAX_LIMIT

Attributes

data_root[RW]
options[RW]
resource[RW]

Public Class Methods

base_uri() click to toggle source
# File lib/shydra/request.rb, line 10
def self.base_uri
  ShopifyAPI::Base.site
end
headers() click to toggle source
# File lib/shydra/request.rb, line 14
def self.headers
  ShopifyAPI::Base.headers
end
new(*args) click to toggle source
Calls superclass method
# File lib/shydra/request.rb, line 18
def initialize(*args)
  @options = args.extract_options!
  @count = @options.delete(:count)
  if args[1] == :count
    @count = true
  end

  @resource = @options.delete(:resource)
  @resource ||= args.first
  @resource ||= 'shop'
  @resource = @resource.to_s

  @parent_resource = @options.delete(:parent_resource)
  @parent_resource, @parent_resource_id = @parent_resource.first if @parent_resource


  @id = @options.delete(:id)

  @options[:limit] ||= SHOPIFY_API_MAX_LIMIT

  resource_path = @resource
  resource_path = resource_path.pluralize unless (@resource == 'shop')
  resource_path = [@parent_resource.to_s.pluralize, @parent_resource_id, resource_path].join('/') if @parent_resource


  path = [resource_path]
  path.unshift('admin') unless Request.base_uri.path[-1] == '/' #handle quirk of URI.merge

  @data_root = nil

  if @count
    path << 'count'
    @options.delete(:limit)
    @data_root = 'count'
  elsif @id
    path << @id.to_s
    @data_root = @resource
  else
    @data_root = @resource.pluralize
  end

  path = path.join('/') + '.json'
  uri = Request.base_uri.merge(path)
  uri.query = @options.to_param unless @options.empty?

  super(uri.to_s, headers: Request.headers)
end

Public Instance Methods

finish(response, bypass_memoization = nil) click to toggle source
Calls superclass method
# File lib/shydra/request.rb, line 66
def finish(response, bypass_memoization = nil)
  response.extend Shydra::Response
  super(response, bypass_memoization)
end