Class: HasOffersV3::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/hasoffersv3/base.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client = HasOffersV3.client) ⇒ Base

Returns a new instance of Base.



6
7
8
# File 'lib/hasoffersv3/base.rb', line 6

def initialize(client = HasOffersV3.client)
  @client = client
end

Class Method Details

.clientObject



15
16
17
# File 'lib/hasoffersv3/base.rb', line 15

def client
  HasOffersV3.client
end

.method_missing(meth, *args, &block) ⇒ Object



19
20
21
# File 'lib/hasoffersv3/base.rb', line 19

def method_missing(meth, *args, &block)
  new(client).send(meth, *args, &block)
end

.targetObject



11
12
13
# File 'lib/hasoffersv3/base.rb', line 11

def target
  name.split('::').last
end

Instance Method Details

#clientObject



70
71
72
# File 'lib/hasoffersv3/base.rb', line 70

def client
  @client
end

#get_request(method, params = {}, &block) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/hasoffersv3/base.rb', line 30

def get_request(method, params = {}, &block)
  if block.nil?
    make_request(:get, method, params)
  else
    page = 1
    begin
      response = make_request(:get, method, params.merge(page: page))
      block.call response
      page += 1
    end until page > (response.page_info['page_count'] || 1)
  end
end

#make_request(http_method, method, params) ⇒ Object



74
75
76
# File 'lib/hasoffersv3/base.rb', line 74

def make_request(http_method, method, params)
  @client.request(http_method, target, method, params)
end

#post_request(method, params = {}, &block) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/hasoffersv3/base.rb', line 43

def post_request(method, params = {}, &block)
  if block.nil?
    make_request(:post, method, params)
  else
    page = 1
    begin
      response = make_request(:post, method, params.merge(page: page))
      block.call response
      page += 1
    end until page > (response.page_info['page_count'] || 1)
  end
end

#requires!(hash, required_params) ⇒ Object



56
57
58
59
60
61
62
63
64
# File 'lib/hasoffersv3/base.rb', line 56

def requires!(hash, required_params)
  missing_params = []
  required_params.each do |param|
    missing_params.push param unless hash.has_key?(param)
  end
  unless missing_params.empty?
    raise ArgumentError.new("Missing required parameter(s): #{missing_params.join(', ')}")
  end
end

#targetObject



66
67
68
# File 'lib/hasoffersv3/base.rb', line 66

def target
  self.class.target
end