lib/cheetahmails.rb in cheetahmails-0.0.1 vs lib/cheetahmails.rb in cheetahmails-0.0.2
- old
+ new
@@ -1,40 +1,45 @@
-require 'httparty'
+require 'faraday'
require 'json'
require 'redis'
module Cheetahmails
- include HTTParty
- base_uri 'https://login.eccmp.com'
+ @base_uri = 'https://login.eccmp.com'
class << self
attr_accessor :configuration
end
- def self.getToken(clear_cache = false)
+ def self.get_token(clear_cache = false)
+ tries ||= 2
redis = Redis.new(Cheetahmails.configuration.redis)
redis.del "cheetahmails_access_token" if clear_cache
if not token = redis.get("cheetahmails_access_token")
- @options = {
- headers: {"Content-Type" => "application/x-www-form-urlencoded"},
- body: {
- "username" => Cheetahmails.configuration.username,
- "password" => Cheetahmails.configuration.password,
- "grant_type" => "password"
- }
+ faraday = Faraday.new(:url => @base_uri) do |faraday|
+ faraday.request :url_encoded # form-encode POST params
+ #faraday.response :logger # log requests to STDOUT
+ faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
+ end
+
+ params = {
+ "username" => Cheetahmails.configuration.username,
+ "password" => Cheetahmails.configuration.password,
+ "grant_type" => "password"
}
- response = self.post('/services2/authorization/oAuth2/Token', @options)
+ response = faraday.post '/services2/authorization/oAuth2/Token', params
+ raise RetryException, response.status.to_s + " " + response.body if response.status != 200
+
begin
jsonresponse = JSON.parse(response.body)
rescue JSON::ParserError => error
- return nil
+ raise response.status.to_s + " " + response.body
end
if token = jsonresponse["access_token"]
redis.set("cheetahmails_access_token", token)
redis.expire("cheetahmails_access_token", jsonresponse["expires_in"])
@@ -42,39 +47,48 @@
end
token
+ rescue RetryException => e
+ if (tries -= 1) > 0
+ retry
+ else
+ raise e
+ end
end
- def self.customerExists(email)
+ def self.find_list_member(email)
tries ||= 2
- @options = {
- headers: {
- "Authorization" => "Bearer " + self.getToken(tries < 2),
- "Content-Type" => "application/json",
- "Accept" => "application/json"
- },
- query: {
- "viewName" => Cheetahmails.configuration.view_name,
- "prop" => '', #first_name,last_name
- "columnName" => "email_address",
- "operation" => "=",
- "param" => email
- }
+ faraday = Faraday.new(:url => @base_uri) do |faraday|
+ faraday.request :url_encoded # form-encode POST params
+ #faraday.response :logger # log requests to STDOUT
+ faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
+ end
+
+ faraday.headers["Authorization"] = "Bearer " + self.get_token(tries < 2)
+ faraday.headers["Content-Type"] = "application/json"
+ faraday.headers["Accept"] = "application/json"
+
+ params = {
+ "viewName" => Cheetahmails.configuration.view_name,
+ "prop" => '', #first_name,last_name
+ "columnName" => "email_address",
+ "operation" => "=",
+ "param" => email
}
- response = self.get('/services2/api/SearchRecords', @options)
+ response = faraday.get '/services2/api/SearchRecords', params
begin
jsonresponse = JSON.parse(response.body)
rescue JSON::ParserError => error
- return nil
+ raise response.status.to_s + " " + response.body
end
- raise RetryException, jsonresponse["message"] if response.code == 401
+ raise RetryException, jsonresponse["message"] if response.status == 401
begin
id = jsonresponse[0]["id"]
rescue => error
return false
@@ -84,40 +98,42 @@
if (tries -= 1) > 0
retry
end
end
- def self.addCustomer(api_post_id, key_data)
+ def self.add_list_member(api_post_id, key_data)
tries ||= 2
data = []
key_data.each do |key, value|
data << { "name" => key, "value" => value}
end
data = {"apiPostId" => api_post_id, "data" => data}
- @options = {
- headers: {
- "Authorization" => "Bearer " + self.getToken(tries < 2),
- "Content-Type" => "application/json",
- "Accept" => "application/json"
- },
- body: data.to_json
- }
+ faraday = Faraday.new(:url => @base_uri) do |faraday|
+ #faraday.response :logger # log requests to STDOUT
+ faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
+ end
- response = self.post('/services2/api/Recipients', @options)
+ response = faraday.post do |req|
+ req.url '/services2/api/Recipients'
+ req.headers["Authorization"] = "Bearer " + self.get_token(tries < 2)
+ req.headers["Content-Type"] = "application/json"
+ req.headers["Accept"] = "application/json"
+ req.body = data.to_json
+ end
begin
jsonresponse = JSON.parse(response.body)
rescue JSON::ParserError => error
- return nil
+ raise response.status.to_s + " " + response.body
end
- raise RetryException, jsonresponse["message"] if response.code == 401
+ raise RetryException, jsonresponse["message"] if response.status == 401
- return response.code == 200 && jsonresponse["success"]
+ return response.status == 200 && jsonresponse["success"]
rescue RetryException => e
if (tries -= 1) > 0
retry
end