adzerk_decision_sdk 1.0.0.pre.beta.7 → 1.0.0.pre.beta.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 69c2c3f742c3359a34c6a15ea195143430e194a6206f2a8b0080b74232ec9f34
4
- data.tar.gz: 9530944f24b7c30a63a65650daf88ecf6feb2806fee2299838bb25fb3d19c2e6
3
+ metadata.gz: d3c1fa1975fc4fcfd55306fd13622738720961b229b85f309fea506f0f1d450f
4
+ data.tar.gz: 53914caaa486d34f102326193f719d0a29e819f6b3917d0fbf7e0917eee6d4c5
5
5
  SHA512:
6
- metadata.gz: 3759cc220044e90f877b03a1e54ae693781a1a04a9cef28b76b9a1ca0237c56d8ffd952282ee641aa155b9eb6539ae90c68a74e5a88a33b080b419e5beeb0acf
7
- data.tar.gz: c59f853bd03677cebe2f6fbcc5e6364173f216ed326d3824b01984467f92fc5679c34e6440ab7f0e2645e4ad56ef825f032ec2f4c5463ab575901cf7d6f7380e
6
+ metadata.gz: 6fc835f013c0781ed26da9f40e4f95d6d594d8d1cea3528d0d61643b6e8925581526ef3cc1c8670f3992d50f70b2aecf51cb4475779fa078115fe19779974d05
7
+ data.tar.gz: 1a2523d2a2499da3a4aff92b1dd9492d2587a775b7dfe90ca82be33c08bbb650c32d91731a2003bd2fc70d015931dfb6a7ce3b21f5022183944377cce05ea947
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- adzerk_decision_sdk (1.0.0.pre.beta.7)
4
+ adzerk_decision_sdk (1.0.0.pre.beta.8)
5
5
  typhoeus (~> 1.0, >= 1.0.1)
6
6
 
7
7
  GEM
@@ -13,7 +13,7 @@ GEM
13
13
  diff-lcs (1.3)
14
14
  ethon (0.14.0)
15
15
  ffi (>= 1.15.0)
16
- ffi (1.15.1)
16
+ ffi (1.15.3)
17
17
  jaro_winkler (1.5.4)
18
18
  method_source (0.9.2)
19
19
  parallel (1.19.1)
@@ -65,4 +65,4 @@ DEPENDENCIES
65
65
  rubocop (~> 0.66.0)
66
66
 
67
67
  BUNDLED WITH
68
- 2.2.17
68
+ 2.2.21
data/README.md CHANGED
@@ -9,7 +9,7 @@ Requires [Ruby 2.5](https://en.wikipedia.org/wiki/Ruby_(programming_language)#Ta
9
9
  [RubyGem Package](https://rubygems.org/gems/adzerk_decision_sdk)
10
10
 
11
11
  ```shell
12
- gem install adzerk_decision_sdk
12
+ gem install adzerk_decision_sdk --pre
13
13
  ```
14
14
 
15
15
  Or add to your `Gemfile`:
@@ -92,10 +92,50 @@ client.user_db.set_custom_properties("abc", props)
92
92
  require "adzerk_decision_sdk"
93
93
 
94
94
  # Demo network ID and API key; find your own via the Adzerk UI!
95
- client = AdzerkDecisionSdk::Client.new(network_id: 23, api_key: "YOUR_API_KEY")
95
+ client = AdzerkDecisionSdk::Client.new(network_id: 23, api_key: ENV["ADZERK_API_KEY"])
96
96
  client.user_db.forget("abc")
97
97
  ```
98
98
 
99
+ ### Decision Explainer
100
+
101
+ The Decision Explainer returns information on a Decision API request explaining why each candidate ad was or was not chosen.
102
+
103
+ ```ruby
104
+ require "adzerk_decision_sdk"
105
+
106
+ # Demo network, site, and ad type IDs; find your own via the Adzerk UI!
107
+ client = AdzerkDecisionSdk::Client.new(network_id: 23, site_id: 667480)
108
+
109
+ request = {
110
+ placements: [{ adTypes: [5] }],
111
+ user: { key: "abc" },
112
+ keywords: ["keyword1", "keyword2"],
113
+ }
114
+
115
+ options = {
116
+ include_explanation: true,
117
+ api_key: ENV["ADZERK_API_KEY"]
118
+ }
119
+
120
+ pp client.decisions.get(request, options)
121
+ ```
122
+
123
+ The response returns a decision object with placement, buckets, rtb logs, and result information.
124
+ ``` json
125
+ {
126
+ "div0": {
127
+ "placement": {},
128
+ "buckets": [],
129
+ "rtb_log": [],
130
+ "results": []
131
+ }
132
+ }
133
+ ```
134
+ The "placement" object represents a decision in which an ad may be served. A Explainer Request can have multiple placements in the request.
135
+ The "buckets" array contains channel and priority information.
136
+ The "rtb_logs" array contains information about Real Time Bidding.
137
+ The "results" array contains the list of candidate ads that did and did not serve, along with a brief explanation.
138
+
99
139
  ### Logging
100
140
 
101
141
  Our logging implementation is meant to be flexible enough to fit into any common Ruby logging framework.
@@ -25,8 +25,9 @@ module AdzerkDecisionSdk
25
25
  configuration = Configuration.new
26
26
  configuration.scheme = protocol
27
27
  configuration.host = host
28
- configuration.api_key['X-Adzerk-ApiKey'] = api_key
28
+ configuration.api_key['ApiKeyAuth'] = api_key
29
29
  configuration.debugging = is_debug
30
+ configuration.server_index = nil
30
31
 
31
32
  unless logger.nil?
32
33
  configuration.logger = logger
@@ -14,17 +14,17 @@ module AdzerkDecisionSdk
14
14
  def get(request, opts = {})
15
15
  opts ||= {}
16
16
  header_params = opts[:header_params] || {}
17
- opts[:body] ||= request.respond_to?('to_hash') ? request.to_hash() : request
17
+ opts[:debug_body] ||= request.respond_to?('to_hash') ? request.to_hash() : request
18
18
 
19
- @logger.info("Processing request: #{opts[:body]}")
19
+ @logger.info("Processing request: #{opts[:debug_body]}")
20
20
 
21
- opts[:body][:enableBotFiltering] = false if not opts[:body].has_key?(:enableBotFiltering)
21
+ opts[:debug_body][:enableBotFiltering] = false if not opts[:debug_body].has_key?(:enableBotFiltering)
22
22
 
23
- if !opts[:body].has_key?(:placements) or !opts[:body][:placements] or opts[:body][:placements].length() == 0
23
+ if !opts[:debug_body].has_key?(:placements) or !opts[:debug_body][:placements] or opts[:debug_body][:placements].length() == 0
24
24
  fail ArgumentError, "Each request requires at least one placement"
25
25
  end
26
26
 
27
- opts[:body][:placements].each_with_index do |placement, idx|
27
+ opts[:debug_body][:placements].each_with_index do |placement, idx|
28
28
  if !placement.has_key?(:adTypes) or !placement[:adTypes] or placement[:adTypes].length() == 0
29
29
  fail ArgumentError, "Each placement needs at least one ad type"
30
30
  end
@@ -56,7 +56,7 @@ module AdzerkDecisionSdk
56
56
 
57
57
  opts[:header_params] = header_params
58
58
 
59
- @logger.info("Processed request: #{opts[:body]}")
59
+ @logger.info("Processed request: #{opts[:debug_body]}")
60
60
  @logger.info("Requesting with headers: #{opts[:header_params]}")
61
61
 
62
62
  response = @api.get_decisions(opts)
@@ -10,7 +10,7 @@ module AdzerkDecisionSdk
10
10
 
11
11
  def set_custom_properties(user_key, properties, network_id: nil)
12
12
  @logger.info("Setting custom properties for #{user_key} on #{network_id || @network_id} to: #{properties}")
13
- @api.add_custom_properties(network_id || @network_id, user_key, { body: properties })
13
+ @api.add_custom_properties(network_id || @network_id, user_key, { debug_body: properties })
14
14
  end
15
15
 
16
16
  def add_interest(user_key, interest, network_id: nil)
@@ -31,7 +31,7 @@ module AdzerkDecisionSdk
31
31
  def gdpr_consent(gdpr_consent, network_id: nil)
32
32
  body = gdpr_consent.respond_to?('to_hash') ? gdpr_consent.to_hash() : gdpr_consent
33
33
  @logger.info("Setting GDPR consent on #{network_id || @network_id} with: #{body}")
34
- @api.gdpr_consent(network_id || @network_id, { body: body })
34
+ @api.gdpr_consent(network_id || @network_id, { debug_body: body })
35
35
  end
36
36
 
37
37
  def ip_override(user_key, ip, network_id: nil)
@@ -11,5 +11,5 @@ OpenAPI Generator version: 4.3.1
11
11
  =end
12
12
 
13
13
  module AdzerkDecisionSdk
14
- VERSION = '1.0.0-beta.7'
14
+ VERSION = '1.0.0-beta.8'
15
15
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adzerk_decision_sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.pre.beta.7
4
+ version: 1.0.0.pre.beta.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adzerk, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-24 00:00:00.000000000 Z
11
+ date: 2021-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: typhoeus