Class: MonkeyWrench::Base

Inherits:
OpenStruct
  • Object
show all
Includes:
HTTParty
Defined in:
lib/monkey_wrench/base.rb

Direct Known Subclasses

Config, List

Constant Summary collapse

@@apikey =
nil
@@datacenter =
nil

Class Method Summary collapse

Class Method Details

.apikeyObject



48
49
50
# File 'lib/monkey_wrench/base.rb', line 48

def apikey
  @@apikey
end

.base_uriObject



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

def base_uri
  "http://#{datacenter}.api.mailchimp.com/1.2/"
end

.datacenterObject



52
53
54
# File 'lib/monkey_wrench/base.rb', line 52

def datacenter
  @@datacenter
end

.default_optionsObject



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

def default_options
  { :output => "json", :apikey=> @@apikey}
end

.get(params) ⇒ Object



23
24
25
26
# File 'lib/monkey_wrench/base.rb', line 23

def get(params)
  response = super(base_uri, :query => params.merge(default_options))
  handle_errors(response.parsed_response)
end

.handle_errors(objects) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/monkey_wrench/base.rb', line 33

def handle_errors(objects)
  return objects unless objects.respond_to?(:has_key?)
  
  if objects.has_key?("error")
    objects.replace({ "error" => MonkeyWrench::Error.new(objects['error'], objects['code']) })
  elsif objects.has_key?("errors")
    objects["errors"] = objects["errors"].map do |err|
      message = err.delete('message')
      code = err.delete('code')
      MonkeyWrench::Error.new(message, code, err)
    end
  end
  objects
end

.post(params) ⇒ Object



28
29
30
31
# File 'lib/monkey_wrench/base.rb', line 28

def post(params)
  response = super(base_uri, :query => params.merge(default_options))
  handle_errors(response.parsed_response)
end