class ActiveCampaignCrm::Connection

Handles all connections with active campaign

Public Class Methods

new() click to toggle source
# File lib/active_campaign_crm/connection.rb, line 7
def initialize
  @connection = Faraday.new(
    url: "#{ActiveCampaignCrm.configuration.account_url}/api/3"
  )
end

Public Instance Methods

delete(url) click to toggle source
# File lib/active_campaign_crm/connection.rb, line 40
def delete(url)
  response = @connection.delete do |req|
    req.url url
    req.headers['Api-Token'] = ActiveCampaignCrm.configuration.api_key
  end
  handle_response(response)
end
get(url, params = {}) click to toggle source
# File lib/active_campaign_crm/connection.rb, line 13
def get(url, params = {})
  response = @connection.get do |req|
    req.url url
    req.headers['Api-Token'] = ActiveCampaignCrm.configuration.api_key
    req.params = params
  end
  handle_response(response)
end
handle_response(response) click to toggle source
# File lib/active_campaign_crm/connection.rb, line 48
def handle_response(response)
  return JSON.parse response.body if response.success?

  errors = JSON.parse(response.body)['errors'] unless response.body.empty?
  error_messages = errors.map { |error| error['title'] } unless errors.nil?
  error_message = error_messages.join('-') unless error_messages.nil?

  case response.status
  when 400
    raise ActiveCampaignCrm::BadRequest, error_message
  when 404
    raise ActiveCampaignCrm::NotFound, error_message
  when 429
    raise ActiveCampaignCrm::TooManyRequests, error_message
  when 500
    raise ActiveCampaignCrm::InternalServerError, error_message
  when 502
    raise ActiveCampaignCrm::BadGateway, error_message
  when 503
    raise ActiveCampaignCrm::ServiceUnavailable, error_message
  when 504
    raise ActiveCampaignCrm::GatewayTimeout, error_message
  else
    raise StandardError, error_message
  end
end
post(url, body) click to toggle source
# File lib/active_campaign_crm/connection.rb, line 22
def post(url, body)
  response = @connection.post do |req|
    req.url url
    req.headers['Api-Token'] = ActiveCampaignCrm.configuration.api_key
    req.body = body
  end
  handle_response(response)
end
put(url, body) click to toggle source
# File lib/active_campaign_crm/connection.rb, line 31
def put(url, body)
  response = @connection.put do |req|
    req.url url
    req.headers['Api-Token'] = ActiveCampaignCrm.configuration.api_key
    req.body = body
  end
  handle_response(response)
end