Class: Shydra::Request

Inherits:
Typhoeus::Request
  • Object
show all
Defined in:
lib/shydra/request.rb

Direct Known Subclasses

Resource, Shydra::Resources::Product

Constant Summary collapse

SHOPIFY_API_MAX_LIMIT =
250

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Request

Returns a new instance of Request.



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# 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

Instance Attribute Details

#data_rootObject

Returns the value of attribute data_root.



7
8
9
# File 'lib/shydra/request.rb', line 7

def data_root
  @data_root
end

#optionsObject

Returns the value of attribute options.



8
9
10
# File 'lib/shydra/request.rb', line 8

def options
  @options
end

#resourceObject

Returns the value of attribute resource.



7
8
9
# File 'lib/shydra/request.rb', line 7

def resource
  @resource
end

Class Method Details

.base_uriObject



10
11
12
# File 'lib/shydra/request.rb', line 10

def self.base_uri
  ShopifyAPI::Base.site
end

.headersObject



14
15
16
# File 'lib/shydra/request.rb', line 14

def self.headers
  ShopifyAPI::Base.headers
end

Instance Method Details

#finish(response, bypass_memoization = nil) ⇒ Object



66
67
68
69
# File 'lib/shydra/request.rb', line 66

def finish(response, bypass_memoization = nil)
  response.extend Shydra::Response
  super(response, bypass_memoization)
end