Class: AdzerkDecisionSdk::PixelClient

Inherits:
Object
  • Object
show all
Defined in:
lib/adzerk_decision_sdk/pixel_client.rb

Instance Method Summary collapse

Constructor Details

#initialize(api_client, logger) ⇒ PixelClient

Returns a new instance of PixelClient.



6
7
8
9
# File 'lib/adzerk_decision_sdk/pixel_client.rb', line 6

def initialize(api_client, logger)
  @api_client = api_client
  @logger = logger
end

Instance Method Details

#fire(url, revenue_override: nil, additional_revenue: nil, event_multiplier: nil, gross_merchandise_value: nil) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/adzerk_decision_sdk/pixel_client.rb', line 11

def fire(url, revenue_override: nil, additional_revenue: nil, event_multiplier: nil, gross_merchandise_value: nil)
  uri = URI(url)
  @logger.info("Firing Pixel at base url of: #{uri.to_s}")

  query_params = URI.decode_www_form(uri.query)
  query_params << ["override", revenue_override] if not revenue_override.nil?
  query_params << ["additional", additional_revenue] if not additional_revenue.nil?
  query_params << ["eventMultiplier", event_multiplier] if not event_multiplier.nil?
  query_params << ["gmv", gross_merchandise_value] if not gross_merchandise_value.nil?
  uri.query = URI.encode_www_form(query_params)
  new_url = uri.to_s()

  @logger.info("After url building with overrides, requesting: #{new_url}")
  request = @api_client.build_request(:GET, '')
  request.base_url = new_url
  response = request.run()
  location = response.response_code == 302 ? response.headers['location'] : nil

  @logger.info("Received response from pixel url: #{response.response_code} with location: #{location}")
  [response.response_code, location]
end