class Adtraction::Api::Client

Attributes

configuration[RW]

Public Class Methods

new(configuration: ::Adtraction::Api.configuration) click to toggle source
# File lib/adtraction/api/client.rb, line 6
def initialize(configuration: ::Adtraction::Api.configuration)
  self.configuration    =   configuration        
  raise InvalidApiKeyError, "You need to supply a valid API key!" if self.configuration.api_key.to_s.empty?
end

Public Instance Methods

get(path, params: {}, headers: {}, options: {}) click to toggle source
# File lib/adtraction/api/client.rb, line 19
def get(path, params: {}, headers: {}, options: {})
  request path, method: :get, params: params, headers: headers, options: options
end
head(path, headers: {}, options: {}) click to toggle source
# File lib/adtraction/api/client.rb, line 31
def head(path, headers: {}, options: {})
  request path, method: :head, headers: headers, options: options
end
log(message) click to toggle source
# File lib/adtraction/api/client.rb, line 70
def log(message)
  puts "[Adtraction::Api::Client] - #{Time.now}: #{message}" if !message.to_s.empty? && self.verbose
end
patch(path, params: {}, data: {}, headers: {}, options: {}) click to toggle source
# File lib/adtraction/api/client.rb, line 27
def patch(path, params: {}, data: {}, headers: {}, options: {})
  request path, method: :patch, params: params, data: data, headers: {}, options: options
end
post(path, params: {}, data: {}, headers: {}, options: {}) click to toggle source
# File lib/adtraction/api/client.rb, line 23
def post(path, params: {}, data: {}, headers: {}, options: {})
  request path, method: :post, params: params, data: data, headers: {}, options: options
end
request(path, method: :get, params: {}, data: {}, headers: {}, options: {}) { |builder| ... } click to toggle source
# File lib/adtraction/api/client.rb, line 35
def request(path, method: :get, params: {}, data: {}, headers: {}, options: {})
  headers               =   {
    "X-Token"       =>  self.configuration.api_key,
    "User-Agent"    =>  self.configuration.faraday.fetch(:user_agent, "Adtraction Ruby Client #{::Adtraction::Api::VERSION}"),
    "Content-Type"  =>  "application/json"
  }.merge(headers)
  
  connection            =   Faraday.new(url: to_uri(path)) do |builder|
    builder.response :logger if self.configuration.verbose_faraday?
    
    builder.headers     =   headers
    builder.response :json
    
    yield builder if block_given?
    
    builder.adapter self.configuration.faraday.fetch(:adapter, :net_http)
  end

  response              =   case method
    when :get
      connection.get do |request|
        request.params  =   params if params && !params.empty?
      end
    when :post, :patch
      connection.send(method) do |request|
        request.body    =   data.to_json if data && !data.empty?
        request.params  =   params if params && !params.empty?
      end
    when :head
      connection.send(method)
  end
  
  return response
end
to_uri(path) click to toggle source
# File lib/adtraction/api/client.rb, line 14
def to_uri(path)
  path                  =   path.gsub(/^\//i, "")
  path                 =~   /^http(s)?:\/\// ? path : "https://#{self.configuration.host}/v#{self.configuration.api_version}/#{path}"
end