Class: Mandrill::API
- Inherits:
-
Object
- Object
- Mandrill::API
- Defined in:
- lib/mandrill.rb
Instance Attribute Summary collapse
-
#apikey ⇒ Object
Returns the value of attribute apikey.
-
#debug ⇒ Object
Returns the value of attribute debug.
-
#host ⇒ Object
Returns the value of attribute host.
-
#path ⇒ Object
Returns the value of attribute path.
-
#session ⇒ Object
Returns the value of attribute session.
Instance Method Summary collapse
- #call(url, params = {}) ⇒ Object
- #cast_error(body) ⇒ Object
- #inbound ⇒ Object
-
#initialize(apikey = nil, debug = false) ⇒ API
constructor
A new instance of API.
- #internal ⇒ Object
- #messages ⇒ Object
- #read_configs ⇒ Object
- #rejects ⇒ Object
- #senders ⇒ Object
- #tags ⇒ Object
- #templates ⇒ Object
- #urls ⇒ Object
- #users ⇒ Object
- #webhooks ⇒ Object
Constructor Details
#initialize(apikey = nil, debug = false) ⇒ API
Returns a new instance of API.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/mandrill.rb', line 13 def initialize(apikey=nil, debug=false) @host = 'https://mandrillapp.com' @path = '/api/1.0/' @session = Excon.new @host @debug = debug if not apikey if ENV['MANDRILL_APIKEY'] apikey = ENV['MANDRILL_APIKEY'] else apikey = read_configs end end raise Error, 'You must provide a Mandrill API key' if not apikey @apikey = apikey end |
Instance Attribute Details
#apikey ⇒ Object
Returns the value of attribute apikey.
11 12 13 |
# File 'lib/mandrill.rb', line 11 def apikey @apikey end |
#debug ⇒ Object
Returns the value of attribute debug.
11 12 13 |
# File 'lib/mandrill.rb', line 11 def debug @debug end |
#host ⇒ Object
Returns the value of attribute host.
11 12 13 |
# File 'lib/mandrill.rb', line 11 def host @host end |
#path ⇒ Object
Returns the value of attribute path.
11 12 13 |
# File 'lib/mandrill.rb', line 11 def path @path end |
#session ⇒ Object
Returns the value of attribute session.
11 12 13 |
# File 'lib/mandrill.rb', line 11 def session @session end |
Instance Method Details
#call(url, params = {}) ⇒ Object
32 33 34 35 36 37 38 39 |
# File 'lib/mandrill.rb', line 32 def call(url, params={}) params[:key] = @apikey params = JSON.generate(params) r = @session.post(:path => "#{@path}#{url}.json", :headers => {'Content-Type' => 'application/json'}, :body => params) cast_error(r.body) if r.status != 200 return JSON.parse(r.body) end |
#cast_error(body) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/mandrill.rb', line 52 def cast_error(body) error_map = { 'ValidationError' => ValidationError, 'Invalid_Key' => InvalidKeyError, 'Unknown_Template' => UnknownTemplateError, 'Invalid_Tag_Name' => InvalidTagNameError, 'Invalid_Reject' => InvalidRejectError, 'Unknown_Sender' => UnknownSenderError, 'Unknown_Url' => UnknownUrlError, 'Invalid_Template' => InvalidTemplateError, 'Unknown_Webhook' => UnknownWebhookError, 'Unknown_InboundDomain' => UnknownInboundDomainError } begin error_info = JSON.parse(body) if error_info['status'] != 'error' or not error_info['name'] raise Error, "We received an unexpected error: #{body}" end if error_map[error_info['name']] raise error_map[error_info['name']], error_info['message'] else raise Error, error_info['message'] end rescue JSON::ParserError raise Error, "We received an unexpected error: #{body}" end end |
#internal ⇒ Object
100 101 102 |
# File 'lib/mandrill.rb', line 100 def internal() Internal.new self end |
#read_configs ⇒ Object
41 42 43 44 45 46 47 48 49 50 |
# File 'lib/mandrill.rb', line 41 def read_configs() [File.('~/.mandrill.key'), '/etc/mandrill.key'].delete_if{ |p| not File.exist? p}.each do |path| f = File.new path apikey = f.read.strip f.close return apikey if apikey != '' end return nil end |