class MailchimpTransactional::ApiClient
Public Class Methods
default()
click to toggle source
# File lib/MailchimpTransactional/api_client.rb, line 26 def self.default @@default ||= ApiClient.new end
new(api_key = '')
click to toggle source
# File lib/MailchimpTransactional/api_client.rb, line 18 def initialize(api_key = '') @host = "https://mandrillapp.com/api/1.0" @format_list = ['json', 'xml', 'php', 'yaml'] @default_output_format = 'json' @accepts = ['application/json', 'application/xml', 'application/x-php', 'application/x-yaml; charset=utf-8'] set_api_key(api_key) end
Public Instance Methods
call_api(http_method, path, body = {})
click to toggle source
# File lib/MailchimpTransactional/api_client.rb, line 40 def call_api(http_method, path, body = {}) use_default_output_format = true active_output_format = @default_output_format url = @host + path # format body if body[:outputFormat] format = body[:outputFormat].downcase if @format_list.include? format url += ".#{format}" body.delete(:outputFormat) use_default_output_format = false active_output_format = format end end # apply output format if use_default_output_format && @format_list.include?(@default_output_format) url += '.%s' % @default_output_format active_output_format = @default_output_format end # apply api key body[:key] = @api_key # send request conn = Excon.new(url, :headers => {'Content-Type' => 'application/json'}, :read_timeout => 300, :write_timeout => 300) res = conn.post(:body => body.to_json) # handle response data = nil if res.status == 200 if active_output_format == 'json' data = JSON.parse(res.body) else data = res.body end end if (!data) fail ApiError.new(:status => res.status, :response_body => res.body) end return data end
set_api_key(api_key = '')
click to toggle source
# File lib/MailchimpTransactional/api_client.rb, line 30 def set_api_key(api_key = '') @api_key = api_key end
set_default_output_format(output_format)
click to toggle source
# File lib/MailchimpTransactional/api_client.rb, line 34 def set_default_output_format(output_format) if @format_list.include? output_format @default_output_format = output_format end end