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