class ActiveCampaign::Client
Attributes
config[R]
Public Class Methods
new(options = {})
click to toggle source
# File lib/active_campaign/client.rb, line 33 def initialize(options = {}) @config = ActiveCampaign.config.dup.merge(options) end
Public Instance Methods
==(other)
click to toggle source
# File lib/active_campaign/client.rb, line 59 def ==(other) other.is_a?(ActiveCampaign::Client) && hash == other.hash end
Also aliased as: eql?
get(api_method, options = {})
click to toggle source
Make a HTTP GET request
@param url [String] The path, relative to {#api_endpoint} @param options [Hash] Query and header params for request @return [Hash]
# File lib/active_campaign/client.rb, line 42 def get(api_method, options = {}) request :get, api_method, options end
hash()
click to toggle source
# File lib/active_campaign/client.rb, line 55 def hash [config.hash, Client].hash end
post(api_method, options = {})
click to toggle source
Make a HTTP POST request
@param url [String] The path, relative to {#api_endpoint} @param options [Hash] Body and header params for request @return [Hash]
# File lib/active_campaign/client.rb, line 51 def post(api_method, options = {}) request :post, api_method, options end
Private Instance Methods
body(method, _api_method, options = {})
click to toggle source
# File lib/active_campaign/client.rb, line 106 def body(method, _api_method, options = {}) return nil unless method == :post fields = options.delete(:fields) { {} } options[:field] = fields.inject({}) do |hash, (k, v)| hash.merge("%#{k}%,0" => v) end options.to_query end
create_request(method, api_method, options = {})
click to toggle source
# File lib/active_campaign/client.rb, line 83 def create_request(method, api_method, options = {}) req = HTTPI::Request.new( url: File.join(api_endpoint), headers: request_headers, query: query(method, api_method, options), body: body(method, api_method, options) ) req.auth.ssl.verify_mode = :none req.auth.ssl.ssl_version = :TLSv1_2 req end
keys_values(response)
click to toggle source
# File lib/active_campaign/client.rb, line 133 def keys_values(response) results = results(response) [results.keys, results.values] end
normalize(response)
click to toggle source
# File lib/active_campaign/client.rb, line 117 def normalize(response) return response if response.is_a? Array keys, values = keys_values(response) if keys.all? { |key| numeric?(key) } response['results'] = values keys.each { |key| response.delete(key) } end response end
numeric?(string)
click to toggle source
# File lib/active_campaign/client.rb, line 129 def numeric?(string) string.to_s.match(/\A[+-]?\d+\Z/).nil? ? false : true end
query(method, api_method, options = {})
click to toggle source
# File lib/active_campaign/client.rb, line 95 def query(method, api_method, options = {}) q = options.delete(:query) { {} } q.merge!(api_key: api_key, api_action: api_method.to_s, api_output: api_output) return q unless method == :get q.merge(options) end
request(method, api_method, data)
click to toggle source
# File lib/active_campaign/client.rb, line 68 def request(method, api_method, data) req = create_request method, api_method, data response = HTTPI.send(method, req) response = JSON.parse(response.body) normalize(response) end
request_headers()
click to toggle source
# File lib/active_campaign/client.rb, line 76 def request_headers { 'User-Agent' => user_agent, 'Content-Type' => 'application/x-www-form-urlencoded' } end
results(response)
click to toggle source
# File lib/active_campaign/client.rb, line 138 def results(response) response.reject { |k, _v| %w[result_code result_message result_output].include?(k) } end