Skip to content

Commit 74e4bc2

Browse files
Likhith329monis0395lksharma
authored andcommitted
Datawrkz Analytics Adapter: add publisherId and apiKey options (prebid#13899)
* feat(analytics): added Datawrkz analytics adapter * fix(analytics): lint fixes for Datawrkz Analytics Adapter * fix(analytics): lint fixes for Datawrkz Analytics Adapter * feat(analytics): add publisherId and apiKey config in Datawrkz Analytics Adapter * Datawrkz Analytics Adapter: add tests for publisherId and apiKey config --------- Co-authored-by: Monis Qadri <[email protected]> Co-authored-by: Love Sharma <[email protected]>
1 parent deeab51 commit 74e4bc2

File tree

3 files changed

+43
-29
lines changed

3 files changed

+43
-29
lines changed

modules/datawrkzAnalyticsAdapter.js

Lines changed: 24 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { logInfo, logError } from '../src/utils.js';
55

66
let ENDPOINT = 'https://prebid-api.highr.ai/analytics';
77
const auctions = {};
8+
const adapterConfig = {};
89

910
const datawrkzAnalyticsAdapter = Object.assign(adapter({ url: ENDPOINT, analyticsType: 'endpoint' }),
1011
{
@@ -125,15 +126,7 @@ const datawrkzAnalyticsAdapter = Object.assign(adapter({ url: ENDPOINT, analytic
125126
failureMessage: null,
126127
}
127128

128-
try {
129-
fetch(ENDPOINT, {
130-
method: 'POST',
131-
body: JSON.stringify(payload),
132-
headers: { 'Content-Type': 'application/json' }
133-
});
134-
} catch (e) {
135-
logError('[DatawrkzAnalytics] Failed to send AD_RENDER_SUCCEEDED event', e, payload);
136-
}
129+
this.sendToEndPoint(payload)
137130

138131
break;
139132
}
@@ -157,15 +150,7 @@ const datawrkzAnalyticsAdapter = Object.assign(adapter({ url: ENDPOINT, analytic
157150
failureMessage: message
158151
}
159152

160-
try {
161-
fetch(ENDPOINT, {
162-
method: 'POST',
163-
body: JSON.stringify(payload),
164-
headers: { 'Content-Type': 'application/json' }
165-
});
166-
} catch (e) {
167-
logError('[DatawrkzAnalytics] Failed to send AD_RENDER_FAILED event', e, payload);
168-
}
153+
this.sendToEndPoint(payload)
169154

170155
break;
171156
}
@@ -189,15 +174,7 @@ const datawrkzAnalyticsAdapter = Object.assign(adapter({ url: ENDPOINT, analytic
189174
adunits: adunitsArray
190175
};
191176

192-
try {
193-
fetch(ENDPOINT, {
194-
method: 'POST',
195-
body: JSON.stringify(payload),
196-
headers: { 'Content-Type': 'application/json' }
197-
});
198-
} catch (e) {
199-
logError('[DatawrkzAnalytics] Sending failed', e, payload);
200-
}
177+
this.sendToEndPoint(payload)
201178

202179
delete auctions[auctionId];
203180
}, 2000); // Wait 2 seconds for BID_WON to happen
@@ -208,13 +185,33 @@ const datawrkzAnalyticsAdapter = Object.assign(adapter({ url: ENDPOINT, analytic
208185
default:
209186
break;
210187
}
188+
},
189+
sendToEndPoint(payload) {
190+
if (!adapterConfig.publisherId || !adapterConfig.apiKey) {
191+
logError('[DatawrkzAnalytics] Missing mandatory config: publisherId or apiKey. Skipping event.');
192+
return;
193+
}
194+
195+
payload.publisherId = adapterConfig.publisherId
196+
payload.apiKey = adapterConfig.apiKey
197+
198+
try {
199+
fetch(ENDPOINT, {
200+
method: 'POST',
201+
body: JSON.stringify(payload),
202+
headers: { 'Content-Type': 'application/json' }
203+
});
204+
} catch (e) {
205+
logError('[DatawrkzAnalytics] Failed to send event', e, payload);
206+
}
211207
}
212208
}
213209
);
214210

215211
datawrkzAnalyticsAdapter.originEnableAnalytics = datawrkzAnalyticsAdapter.enableAnalytics;
216212

217213
datawrkzAnalyticsAdapter.enableAnalytics = function (config) {
214+
Object.assign(adapterConfig, config?.options || {});
218215
datawrkzAnalyticsAdapter.originEnableAnalytics(config);
219216
logInfo('[DatawrkzAnalytics] Enabled with config:', config);
220217
};

modules/datawrkzAnalyticsAdapter.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,10 @@ Enable the adapter using:
1919

2020
```js
2121
pbjs.enableAnalytics({
22-
provider: 'datawrkzanalytics'
22+
provider: 'datawrkzanalytics',
23+
options: {
24+
publisherId: 'YOUR_PUBLISHER_ID',
25+
apiKey: 'YOUR_API_KEY'
26+
}
2327
});
28+
```

test/spec/modules/datawrkzAnalyticsAdapter_spec.js

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,13 @@ describe("DatawrkzAnalyticsAdapter", function () {
2525
sandbox = sinon.createSandbox();
2626
fetchStub = sandbox.stub(window, "fetch");
2727

28-
adapterManager.enableAnalytics({ provider: "datawrkzanalytics" });
28+
adapterManager.enableAnalytics({
29+
provider: "datawrkzanalytics",
30+
options: {
31+
publisherId: "testPublisher",
32+
apiKey: "testApiKey"
33+
}
34+
});
2935
});
3036

3137
afterEach(function () {
@@ -126,6 +132,8 @@ describe("DatawrkzAnalyticsAdapter", function () {
126132
expect(options.headers["Content-Type"]).to.equal("application/json");
127133

128134
const body = JSON.parse(options.body);
135+
expect(body.publisherId).to.equal("testPublisher");
136+
expect(body.apiKey).to.equal("testApiKey");
129137
expect(body.auctionId).to.equal(auctionId);
130138
expect(body.adunits[0].code).to.equal(adUnitCode);
131139
expect(body.adunits[0].bids[0].bidder).to.equal(bidder);
@@ -148,6 +156,8 @@ describe("DatawrkzAnalyticsAdapter", function () {
148156
const payload = JSON.parse(options.body);
149157

150158
expect(payload.eventType).to.equal(AD_RENDER_SUCCEEDED);
159+
expect(payload.publisherId).to.equal("testPublisher");
160+
expect(payload.apiKey).to.equal("testApiKey");
151161
expect(payload.bidderCode).to.equal("appnexus");
152162
expect(payload.successDoc).to.be.a("string");
153163
expect(payload.failureReason).to.be.null;
@@ -170,6 +180,8 @@ describe("DatawrkzAnalyticsAdapter", function () {
170180
const payload = JSON.parse(options.body);
171181

172182
expect(payload.eventType).to.equal(AD_RENDER_FAILED);
183+
expect(payload.publisherId).to.equal("testPublisher");
184+
expect(payload.apiKey).to.equal("testApiKey");
173185
expect(payload.bidderCode).to.equal("appnexus");
174186
expect(payload.successDoc).to.be.null;
175187
expect(payload.failureReason).to.equal("network");

0 commit comments

Comments
 (0)