class AdLeads::Client
Attributes
last_response[R]
Public Class Methods
new(options={})
click to toggle source
# File lib/ad_leads/client.rb, line 11 def initialize(options={}) merged_options = AdLeads.options.merge(options) Configuration::VALID_CONFIG_KEYS.each do |key| send("#{key}=", merged_options[key]) end end
Public Instance Methods
get(path, params = {})
click to toggle source
# File lib/ad_leads/client.rb, line 22 def get(path, params = {}) request(:get, path, params) end
get_reports(params)
click to toggle source
# File lib/ad_leads/client.rb, line 18 def get_reports(params) get("/reports/campaign/report", params) end
last_response_id()
click to toggle source
# File lib/ad_leads/client.rb, line 30 def last_response_id JSON.parse(last_response.body)['data'].first end
post(path, params = {})
click to toggle source
# File lib/ad_leads/client.rb, line 26 def post(path, params = {}) request(:post, path, params) end
Private Instance Methods
connection(opts = {})
click to toggle source
# File lib/ad_leads/client.rb, line 43 def connection(opts = {}) opts[:headers] ||= { 'Accept' => 'application/json' } Faraday.new(url: endpoint) do |faraday| faraday.headers = opts[:headers] faraday.request :multipart if opts[:multipart] faraday.authorization :Bearer, token faraday.adapter :httpclient faraday.request :url_encoded # faraday.response :logger end end
etag_opts(etag)
click to toggle source
# File lib/ad_leads/client.rb, line 36 def etag_opts(etag) { headers: { 'If-Match' => etag }, multipart: true } end
request(method, path, params = {})
click to toggle source
# File lib/ad_leads/client.rb, line 61 def request(method, path, params = {}) etag = params.delete(:etag) opts = etag ? etag_opts(etag) : {} response = connection(opts).send(method, path) do |request| request.params = params if method == :get request.body = params if method == :post end # Logger.new(STDOUT).info [ # '====================', # endpoint: endpoint, # method: method, # path: path, # body: response.body # ].join("\n") case response.status when 400 then raise ArgError.new response.body when 401 then raise AuthError.new "token: #{token}" + response.body.to_s when 412 then raise EtagMismatchError.new response.body when 500 then raise ApiServerError.new response.body else @last_response = response end # rescue Faraday::Error::TimeoutError, Timeout::Error => error # rescue Faraday::Error::ClientError, JSON::ParserError => error end
token()
click to toggle source
# File lib/ad_leads/client.rb, line 57 def token @token ||= AdLeads::Token.new(client_id: client_id, principle: principle).token end