class Freshmail::Client
Constants
- URL
Attributes
api_key[RW]
api_secret[RW]
Public Class Methods
new(api_key, api_secret)
click to toggle source
# File lib/freshmail/client.rb, line 7 def initialize(api_key, api_secret) @api_key = api_key || self.class.api_key || ENV['FRESHMAIL_API_KEY'] @api_key = @api_key.strip if @api_key @api_secret = api_secret || self.class.api_secret || ENV['FRESHMAIL_API_secret'] @api_secret = @api_secret.strip if @api_secret raise Freshmail::CredentialsMissingError, 'api_key or api_secret are missing' unless @api_secret or @api_key raise Freshmail::CredentialsInvalidError, 'api_key or api_secret are invalid' unless self.ping['data'] == 'pong' end
Public Instance Methods
add_subscriber(sub_info = {})
click to toggle source
# File lib/freshmail/client.rb, line 36 def add_subscriber(sub_info = {}) call_freshmail(:post, 'subscriber/add', sub_info) end
batch_add_subscriber(sub_info = {})
click to toggle source
# File lib/freshmail/client.rb, line 44 def batch_add_subscriber(sub_info = {}) call_freshmail(:post, 'subscriber/addMultiple', sub_info) end
batch_delete_subscriber(sub_info = {})
click to toggle source
# File lib/freshmail/client.rb, line 56 def batch_delete_subscriber(sub_info = {}) call_freshmail(:post, 'subscriber/deleteMultiple', sub_info) end
batch_edit_subscriber(sub_info = {})
click to toggle source
# File lib/freshmail/client.rb, line 48 def batch_edit_subscriber(sub_info = {}) call_freshmail(:post, 'subscriber/editMultiple', sub_info) end
create_list(list_info = {})
click to toggle source
# File lib/freshmail/client.rb, line 64 def create_list(list_info = {}) call_freshmail(:post, 'subscribers_list/create', list_info) end
delete_list(list_info = {})
click to toggle source
# File lib/freshmail/client.rb, line 72 def delete_list(list_info = {}) call_freshmail(:post, 'subscribers_list/delete', list_info) end
delete_subscriber(sub_info = {})
click to toggle source
# File lib/freshmail/client.rb, line 52 def delete_subscriber(sub_info = {}) call_freshmail(:post, 'subscriber/delete', sub_info) end
edit_subscriber(sub_info = {})
click to toggle source
# File lib/freshmail/client.rb, line 40 def edit_subscriber(sub_info = {}) call_freshmail(:post, 'subscriber/edit', sub_info) end
lists()
click to toggle source
# File lib/freshmail/client.rb, line 60 def lists call_freshmail(:get, 'subscribers_list/lists') end
mail(mail_data = {})
click to toggle source
# File lib/freshmail/client.rb, line 21 def mail(mail_data = {}) call_freshmail(:post, 'mail', mail_data) end
ping()
click to toggle source
# File lib/freshmail/client.rb, line 17 def ping call_freshmail(:get, 'ping') end
subscriber(sub_info = {})
click to toggle source
# File lib/freshmail/client.rb, line 25 def subscriber(sub_info = {}) list = sub_info[:list] email = sub_info[:email] call_freshmail(:get, "subscriber/get/#{list}/#{email}") end
subscribers(sub_info = {})
click to toggle source
# File lib/freshmail/client.rb, line 32 def subscribers(sub_info = {}) call_freshmail(:post, 'subscriber/getMultiple', sub_info) end
update_list(list_info = {})
click to toggle source
# File lib/freshmail/client.rb, line 68 def update_list(list_info = {}) call_freshmail(:post, 'subscribers_list/update', list_info) end
Protected Instance Methods
api_sign(get_data, json_data)
click to toggle source
# File lib/freshmail/client.rb, line 98 def api_sign(get_data, json_data) Digest::SHA1.hexdigest [ self.api_key, get_data, json_data, self.api_secret ].join end
call_freshmail(call_type, get_data, json_data = nil)
click to toggle source
# File lib/freshmail/client.rb, line 77 def call_freshmail(call_type, get_data, json_data = nil) json_data_converted = json_data ? json_data.to_json : '' endpoint = "/rest/#{get_data}" conn = Faraday.new(:url => URL) do |faraday| faraday.request :url_encoded # faraday.response :logger faraday.adapter Faraday.default_adapter end response = conn.send(call_type) do |req| req.url endpoint req.headers['Content-Type'] = 'application/json' req.headers['X-Rest-ApiKey'] = self.api_key req.headers['X-Rest-ApiSign'] = api_sign(endpoint, json_data_converted) req.body = json_data_converted if req.method == :post end JSON.parse(response.body) end