class Mailigen::Api

Attributes

api_key[RW]
secure[RW]

Public Class Methods

new(api_key = nil, secure = false) click to toggle source

Initialize API wrapper.

@param api_key - from mailigen.com . Required. @param secure - use SSL. By default FALSE

# File lib/mailigen/api.rb, line 17
def initialize api_key = nil, secure = false
  self.api_key = api_key
  self.secure = secure
  raise NoApiKeyError, "You must have Mailigen API key." unless self.api_key
end

Public Instance Methods

api_url() click to toggle source

@return default api url with version included

# File lib/mailigen/api.rb, line 48
def api_url
  protocol = self.secure ? "https" : "http"
  "#{protocol}://#{Mailigen::api_host}/#{Mailigen::api_version}/?output=json"
end
call(method, params = {}) click to toggle source

Call Mailigen api method (Documented in dev.mailigen.com/display/AD/Mailigen+API )

@param method - method name @param params - params if required for API

@return JSON, String data if all goes well. Exception if somethnigs goes wrong.

# File lib/mailigen/api.rb, line 32
def call method, params = {}
  url = "#{api_url}&method=#{method}"
  
  params = {apikey: self.api_key}.merge params
  
  resp = post_api(url, params)
  begin
    return JSON.parse(resp)
  rescue
    return resp.tr('"','')
  end
end

Private Instance Methods

post_api(url, params) click to toggle source

All api calls throught POST method.

@param url - url to post @param params - params in hash

@return response body

# File lib/mailigen/api.rb, line 62
def post_api url, params
  uri = URI.parse(url)
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = self.secure
  form_params = params.to_query
  res = http.post(uri.request_uri, form_params)
  res.body
end