From 80b56b183356690be9c131f6e5ce26c41b14b4dc Mon Sep 17 00:00:00 2001 From: sagar4596 <132884303+sagar4596@users.noreply.github.com> Date: Tue, 31 Oct 2023 12:05:52 +0530 Subject: [PATCH 01/21] added DocereeAdManager bid Adapter --- modules/docereeAdManager.js | 106 ++++++++++++++++++ modules/docereeAdManager.md | 36 ++++++ test/spec/modules/docereeAdManager_spec.js | 123 +++++++++++++++++++++ 3 files changed, 265 insertions(+) create mode 100644 modules/docereeAdManager.js create mode 100644 modules/docereeAdManager.md create mode 100644 test/spec/modules/docereeAdManager_spec.js diff --git a/modules/docereeAdManager.js b/modules/docereeAdManager.js new file mode 100644 index 00000000000..b52da12ba87 --- /dev/null +++ b/modules/docereeAdManager.js @@ -0,0 +1,106 @@ +import { registerBidder } from '../src/adapters/bidderFactory.js'; +import { config } from '../src/config.js'; +import { BANNER } from '../src/mediaTypes.js'; +const BIDDER_CODE = 'docereeAdManager'; +const END_POINT = 'https://prebidexample.sagargolait.repl.co'; + +export const spec = { + code: BIDDER_CODE, + url: '', + supportedMediaTypes: [BANNER], + + isBidRequestValid: (bid) => { + const { placementId } = bid.params; + return !!placementId; + }, + isGdprConsentPresent: (bid) => { + const { gdpr, gdprConsent } = bid.params; + if (gdpr == '1') { + return !!gdprConsent; + } + return true; + }, + buildRequests: (validBidRequests) => { + const serverRequests = []; + const { data } = config.getConfig('docereeAdManager.user'); + + // TODO: this should probably look at refererInfo + // const { page, domain, token } = config.getConfig("customAdapter.context"); + + validBidRequests.forEach(function (validBidRequest) { + const payload = getPayload(validBidRequest, data); + serverRequests.push({ + method: 'POST', + url: END_POINT, + data: JSON.stringify(payload.data), + options: { + contentType: 'application/json', + withCredentials: true + }, + }); + }); + + return serverRequests; + }, + interpretResponse: (serverResponse) => { + const responseJson = serverResponse ? serverResponse.body : {}; + const bidResponse = { + ad: responseJson.ad, + width: Number(responseJson.width), + height: Number(responseJson.height), + requestId: responseJson.requestId, + netRevenue: true, + ttl: 30, + cpm: responseJson.cpm, + currency: responseJson.currency, + mediaType: 'banner', + creativeId: responseJson.creativeId, + meta: { + advertiserDomains: [responseJson.meta.advertiserDomains], + }, + }; + + return [bidResponse]; + }, +}; + +function getPayload(bid, bidderRequest) { + const { adUnitCode, bidId } = bid; + const { + userid, + email, + firstname, + lastname, + specialization, + hcpid, + gender, + city, + state, + zipcode, + hashedNPI, + pb, + privacyConsent, + } = bidderRequest; + + return { + data: { + userid: userid, + email: email, + firstname: firstname, + lastname: lastname, + specialization: specialization, + hcpid: hcpid, + gender: gender, + city: city, + state: state, + zipcode: zipcode, + hashedNPI: hashedNPI, + pb: pb, + privacyConsent: privacyConsent, + adunit: adUnitCode, + requestId: bidId, + }, + }; +} + +registerBidder(spec); diff --git a/modules/docereeAdManager.md b/modules/docereeAdManager.md new file mode 100644 index 00000000000..971c8a6439d --- /dev/null +++ b/modules/docereeAdManager.md @@ -0,0 +1,36 @@ +# Overview + +``` +Module Name: Doceree AdManager Adapter +Module Type: Bidder Adapter +Maintainer: tech.stack@doceree.com +``` + + + +Connects to Doceree demand source to fetch bids. +Please use `docereeAdManager` as the bidder code. + +# Test Parameters + +``` +var adUnits = [ + { + code: 'DOC-397-1', + sizes: [ + [300, 250] + ], + bids: [ + { + bidder: "docereeAdManager", + params: { + placementId: 'DOC_7jm9j5eqkl0xvc5w', //required + publisherUrl: document.URL || window.location.href, //optional + gdpr: '1', //optional + gdprConsent:'CPQfU1jPQfU1jG0AAAENAwCAAAAAAAAAAAAAAAAAAAAA.IGLtV_T9fb2vj-_Z99_tkeYwf95y3p-wzhheMs-8NyZeH_B4Wv2MyvBX4JiQKGRgksjLBAQdtHGlcTQgBwIlViTLMYk2MjzNKJrJEilsbO2dYGD9Pn8HT3ZCY70-vv__7v3ff_3g', //optional + } + } + ] + } +]; +``` diff --git a/test/spec/modules/docereeAdManager_spec.js b/test/spec/modules/docereeAdManager_spec.js new file mode 100644 index 00000000000..b535406d026 --- /dev/null +++ b/test/spec/modules/docereeAdManager_spec.js @@ -0,0 +1,123 @@ +import { expect } from "chai"; +import { spec } from "../../../modules/docereeAdManager.js"; +import { config } from "../../../src/config.js"; + +describe("docereeAdManager", function () { + config.setConfig({ + doceree: { + user: { + data: { + userid: "", + email: "", + firstName: "", + lastName: "", + specialization: "", + hcpid: "", + gender: "", + city: "", + state: "", + zipCode: "", + hashedNPI: "", + mobile: "", + pb: "", + privacyConsent: "", + }, + }, + }, + }); + let bid = { + bidId: "testing", + bidder: "docereeAdManager", + params: { + placementId: "DOC_7jm9j5eqkl0xvc5w", + gdpr: "1", + gdprConsent: + "CPQfU1jPQfU1jG0AAAENAwCAAAAAAAAAAAAAAAAAAAAA.IGLtV_T9fb2vj-_Z99_tkeYwf95y3p-wzhheMs-8NyZeH_B4Wv2MyvBX4JiQKGRgksjLBAQdtHGlcTQgBwIlViTLMYk2MjzNKJrJEilsbO2dYGD9Pn8HT3ZCY70-vv__7v3ff_3g", + }, + }; + + describe("isBidRequestValid", function () { + it("Should return true if placementId is present", function () { + expect(spec.isBidRequestValid(bid)).to.be.true; + }); + it("Should return false if placementId is not present", function () { + delete bid.params.placementId; + expect(spec.isBidRequestValid(bid)).to.be.false; + }); + }); + + describe("isGdprConsentPresent", function () { + it("Should return true if gdpr consent is present", function () { + expect(spec.isGdprConsentPresent(bid)).to.be.true; + }); + }); + + describe("buildRequests", function () { + let serverRequest = spec.buildRequests([bid]); + serverRequest = serverRequest[0]; + it("Creates a ServerRequest object with method, URL and data", function () { + expect(serverRequest).to.exist; + expect(serverRequest.method).to.exist; + expect(serverRequest.url).to.exist; + expect(serverRequest.data).to.exist; + }); + it("Returns POST method", function () { + expect(serverRequest.method).to.equal("POST"); + }); + it("Returns valid URL", function () { + expect(serverRequest.url).to.equal( + "https://prebidexample.sagargolait.repl.co" + ); + }); + }); + describe("interpretResponse", function () { + it("Should interpret banner response", function () { + const banner = { + body: { + cpm: 3.576, + currency: "USD", + width: 250, + height: 300, + ad: "

I am an ad

", + ttl: 30, + creativeId: "div-1", + netRevenue: false, + bidderCode: "123", + dealId: 232, + requestId: "123", + meta: { + brandId: null, + advertiserDomains: ["https://prebidexample.sagargolait.repl.co"], + }, + }, + }; + let bannerResponses = spec.interpretResponse(banner); + expect(bannerResponses).to.be.an("array").that.is.not.empty; + let dataItem = bannerResponses[0]; + expect(dataItem).to.have.all.keys( + "requestId", + "cpm", + "width", + "height", + "ad", + "ttl", + "netRevenue", + "currency", + "mediaType", + "creativeId", + "meta" + ); + expect(dataItem.requestId).to.equal("123"); + expect(dataItem.cpm).to.equal(3.576); + expect(dataItem.width).to.equal(250); + expect(dataItem.height).to.equal(300); + expect(dataItem.ad).to.equal("

I am an ad

"); + expect(dataItem.ttl).to.equal(30); + expect(dataItem.netRevenue).to.be.true; + expect(dataItem.currency).to.equal("USD"); + expect(dataItem.creativeId).to.equal("div-1"); + expect(dataItem.meta.advertiserDomains).to.be.an("array").that.is.not + .empty; + }); + }); +}); From 423ca3db109bfe27b1e1e6960b66db9273e9711d Mon Sep 17 00:00:00 2001 From: sagar4596 <132884303+sagar4596@users.noreply.github.com> Date: Tue, 31 Oct 2023 16:39:49 +0530 Subject: [PATCH 02/21] adapter prod api added --- modules/docereeAdManager.js | 11 +- modules/docereeAdManager.md | 27 ++++- package-lock.json | 2 +- test/spec/modules/docereeAdManager_spec.js | 120 ++++++++++----------- 4 files changed, 93 insertions(+), 67 deletions(-) diff --git a/modules/docereeAdManager.js b/modules/docereeAdManager.js index b52da12ba87..5e8585b1d53 100644 --- a/modules/docereeAdManager.js +++ b/modules/docereeAdManager.js @@ -2,7 +2,7 @@ import { registerBidder } from '../src/adapters/bidderFactory.js'; import { config } from '../src/config.js'; import { BANNER } from '../src/mediaTypes.js'; const BIDDER_CODE = 'docereeAdManager'; -const END_POINT = 'https://prebidexample.sagargolait.repl.co'; +const END_POINT = 'https://dai.doceree.com'; export const spec = { code: BIDDER_CODE, @@ -35,7 +35,7 @@ export const spec = { data: JSON.stringify(payload.data), options: { contentType: 'application/json', - withCredentials: true + withCredentials: true, }, }); }); @@ -65,7 +65,8 @@ export const spec = { }; function getPayload(bid, bidderRequest) { - const { adUnitCode, bidId } = bid; + const { bidId, params } = bid; + const { placementId } = params; const { userid, email, @@ -95,9 +96,9 @@ function getPayload(bid, bidderRequest) { state: state, zipcode: zipcode, hashedNPI: hashedNPI, - pb: pb, + pb: 1, privacyConsent: privacyConsent, - adunit: adUnitCode, + adunit: placementId, requestId: bidId, }, }; diff --git a/modules/docereeAdManager.md b/modules/docereeAdManager.md index 971c8a6439d..82a15cccab1 100644 --- a/modules/docereeAdManager.md +++ b/modules/docereeAdManager.md @@ -24,7 +24,7 @@ var adUnits = [ { bidder: "docereeAdManager", params: { - placementId: 'DOC_7jm9j5eqkl0xvc5w', //required + placementId: 'DOC-500-3', //required publisherUrl: document.URL || window.location.href, //optional gdpr: '1', //optional gdprConsent:'CPQfU1jPQfU1jG0AAAENAwCAAAAAAAAAAAAAAAAAAAAA.IGLtV_T9fb2vj-_Z99_tkeYwf95y3p-wzhheMs-8NyZeH_B4Wv2MyvBX4JiQKGRgksjLBAQdtHGlcTQgBwIlViTLMYk2MjzNKJrJEilsbO2dYGD9Pn8HT3ZCY70-vv__7v3ff_3g', //optional @@ -34,3 +34,28 @@ var adUnits = [ } ]; ``` + +```javascript +pbjs.setBidderConfig({ + bidders: ["docereeAdManager"], + config: { + docereeAdManager: { + user: { + data: { + userid: "DE.V1.138353881958.178023499", + email: "", + firstname: "RAYMOND", + lastname: "SCHONDELMEYER", + specialization: "Pediatrics", + hcpid: "9980811134", + gender: "Male", + city: "", + state: "", + zipcode: "65201", + hashedNPI: "", + }, + }, + }, + }, +}); +``` diff --git a/package-lock.json b/package-lock.json index 04e92c2f79e..5fc0f0ec641 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,7 +6,7 @@ "packages": { "": { "name": "prebid.js", - "version": "8.8.0-pre", + "version": "8.12.0-pre", "license": "Apache-2.0", "dependencies": { "@babel/core": "^7.16.7", diff --git a/test/spec/modules/docereeAdManager_spec.js b/test/spec/modules/docereeAdManager_spec.js index b535406d026..e562b07a40c 100644 --- a/test/spec/modules/docereeAdManager_spec.js +++ b/test/spec/modules/docereeAdManager_spec.js @@ -1,122 +1,122 @@ -import { expect } from "chai"; -import { spec } from "../../../modules/docereeAdManager.js"; -import { config } from "../../../src/config.js"; +import { expect } from 'chai'; +import { spec } from '../../../modules/docereeAdManager.js'; +import { config } from '../../../src/config.js'; -describe("docereeAdManager", function () { +describe('docereeAdManager', function () { config.setConfig({ - doceree: { + docereeAdManager: { user: { data: { - userid: "", - email: "", - firstName: "", - lastName: "", - specialization: "", - hcpid: "", - gender: "", - city: "", - state: "", - zipCode: "", - hashedNPI: "", - mobile: "", - pb: "", - privacyConsent: "", + userid: '', + email: '', + firstName: '', + lastName: '', + specialization: '', + hcpid: '', + gender: '', + city: '', + state: '', + zipCode: '', + hashedNPI: '', + mobile: '', + pb: '', + privacyConsent: '', }, }, }, }); let bid = { - bidId: "testing", - bidder: "docereeAdManager", + bidId: 'testing', + bidder: 'docereeAdManager', params: { - placementId: "DOC_7jm9j5eqkl0xvc5w", - gdpr: "1", + placementId: 'DOC-500-3', + gdpr: '1', gdprConsent: - "CPQfU1jPQfU1jG0AAAENAwCAAAAAAAAAAAAAAAAAAAAA.IGLtV_T9fb2vj-_Z99_tkeYwf95y3p-wzhheMs-8NyZeH_B4Wv2MyvBX4JiQKGRgksjLBAQdtHGlcTQgBwIlViTLMYk2MjzNKJrJEilsbO2dYGD9Pn8HT3ZCY70-vv__7v3ff_3g", + 'CPQfU1jPQfU1jG0AAAENAwCAAAAAAAAAAAAAAAAAAAAA.IGLtV_T9fb2vj-_Z99_tkeYwf95y3p-wzhheMs-8NyZeH_B4Wv2MyvBX4JiQKGRgksjLBAQdtHGlcTQgBwIlViTLMYk2MjzNKJrJEilsbO2dYGD9Pn8HT3ZCY70-vv__7v3ff_3g', }, }; - describe("isBidRequestValid", function () { - it("Should return true if placementId is present", function () { + describe('isBidRequestValid', function () { + it('Should return true if placementId is present', function () { expect(spec.isBidRequestValid(bid)).to.be.true; }); - it("Should return false if placementId is not present", function () { + it('Should return false if placementId is not present', function () { delete bid.params.placementId; expect(spec.isBidRequestValid(bid)).to.be.false; }); }); - describe("isGdprConsentPresent", function () { - it("Should return true if gdpr consent is present", function () { + describe('isGdprConsentPresent', function () { + it('Should return true if gdpr consent is present', function () { expect(spec.isGdprConsentPresent(bid)).to.be.true; }); }); - describe("buildRequests", function () { + describe('buildRequests', function () { let serverRequest = spec.buildRequests([bid]); serverRequest = serverRequest[0]; - it("Creates a ServerRequest object with method, URL and data", function () { + it('Creates a ServerRequest object with method, URL and data', function () { expect(serverRequest).to.exist; expect(serverRequest.method).to.exist; expect(serverRequest.url).to.exist; expect(serverRequest.data).to.exist; }); - it("Returns POST method", function () { - expect(serverRequest.method).to.equal("POST"); + it('Returns POST method', function () { + expect(serverRequest.method).to.equal('POST'); }); - it("Returns valid URL", function () { + it('Returns valid URL', function () { expect(serverRequest.url).to.equal( - "https://prebidexample.sagargolait.repl.co" + 'https://dai.doceree.com' ); }); }); - describe("interpretResponse", function () { - it("Should interpret banner response", function () { + describe('interpretResponse', function () { + it('Should interpret banner response', function () { const banner = { body: { cpm: 3.576, - currency: "USD", + currency: 'USD', width: 250, height: 300, - ad: "

I am an ad

", + ad: '

I am an ad

', ttl: 30, - creativeId: "div-1", + creativeId: 'div-1', netRevenue: false, - bidderCode: "123", + bidderCode: '123', dealId: 232, - requestId: "123", + requestId: '123', meta: { brandId: null, - advertiserDomains: ["https://prebidexample.sagargolait.repl.co"], + advertiserDomains: ['https://dai.doceree.com'], }, }, }; let bannerResponses = spec.interpretResponse(banner); - expect(bannerResponses).to.be.an("array").that.is.not.empty; + expect(bannerResponses).to.be.an('array').that.is.not.empty; let dataItem = bannerResponses[0]; expect(dataItem).to.have.all.keys( - "requestId", - "cpm", - "width", - "height", - "ad", - "ttl", - "netRevenue", - "currency", - "mediaType", - "creativeId", - "meta" + 'requestId', + 'cpm', + 'width', + 'height', + 'ad', + 'ttl', + 'netRevenue', + 'currency', + 'mediaType', + 'creativeId', + 'meta' ); - expect(dataItem.requestId).to.equal("123"); + expect(dataItem.requestId).to.equal('123'); expect(dataItem.cpm).to.equal(3.576); expect(dataItem.width).to.equal(250); expect(dataItem.height).to.equal(300); - expect(dataItem.ad).to.equal("

I am an ad

"); + expect(dataItem.ad).to.equal('

I am an ad

'); expect(dataItem.ttl).to.equal(30); expect(dataItem.netRevenue).to.be.true; - expect(dataItem.currency).to.equal("USD"); - expect(dataItem.creativeId).to.equal("div-1"); - expect(dataItem.meta.advertiserDomains).to.be.an("array").that.is.not + expect(dataItem.currency).to.equal('USD'); + expect(dataItem.creativeId).to.equal('div-1'); + expect(dataItem.meta.advertiserDomains).to.be.an('array').that.is.not .empty; }); }); From 925ebd0bea9021f3f5d3edf6abf1357fd42522a1 Mon Sep 17 00:00:00 2001 From: sagar4596 <132884303+sagar4596@users.noreply.github.com> Date: Tue, 31 Oct 2023 16:53:38 +0530 Subject: [PATCH 03/21] new configs added --- modules/docereeAdManager.js | 39 ++++--- modules/docereeAdManager.md | 28 +++-- test/spec/modules/docereeAdManager_spec.js | 123 +++++++++++---------- 3 files changed, 104 insertions(+), 86 deletions(-) diff --git a/modules/docereeAdManager.js b/modules/docereeAdManager.js index 5e8585b1d53..20a2bf28283 100644 --- a/modules/docereeAdManager.js +++ b/modules/docereeAdManager.js @@ -1,12 +1,12 @@ -import { registerBidder } from '../src/adapters/bidderFactory.js'; -import { config } from '../src/config.js'; -import { BANNER } from '../src/mediaTypes.js'; -const BIDDER_CODE = 'docereeAdManager'; -const END_POINT = 'https://dai.doceree.com'; +import { registerBidder } from "../src/adapters/bidderFactory.js"; +import { config } from "../src/config.js"; +import { BANNER } from "../src/mediaTypes.js"; +const BIDDER_CODE = "docereeAdManager"; +const END_POINT = "https://dai.doceree.com"; export const spec = { code: BIDDER_CODE, - url: '', + url: "", supportedMediaTypes: [BANNER], isBidRequestValid: (bid) => { @@ -15,14 +15,14 @@ export const spec = { }, isGdprConsentPresent: (bid) => { const { gdpr, gdprConsent } = bid.params; - if (gdpr == '1') { + if (gdpr == "1") { return !!gdprConsent; } return true; }, buildRequests: (validBidRequests) => { const serverRequests = []; - const { data } = config.getConfig('docereeAdManager.user'); + const { data } = config.getConfig("docereeAdManager.user"); // TODO: this should probably look at refererInfo // const { page, domain, token } = config.getConfig("customAdapter.context"); @@ -30,11 +30,11 @@ export const spec = { validBidRequests.forEach(function (validBidRequest) { const payload = getPayload(validBidRequest, data); serverRequests.push({ - method: 'POST', + method: "POST", url: END_POINT, data: JSON.stringify(payload.data), options: { - contentType: 'application/json', + contentType: "application/json", withCredentials: true, }, }); @@ -53,7 +53,7 @@ export const spec = { ttl: 30, cpm: responseJson.cpm, currency: responseJson.currency, - mediaType: 'banner', + mediaType: "banner", creativeId: responseJson.creativeId, meta: { advertiserDomains: [responseJson.meta.advertiserDomains], @@ -74,13 +74,18 @@ function getPayload(bid, bidderRequest) { lastname, specialization, hcpid, - gender, + gd, city, state, zipcode, hashedNPI, - pb, privacyConsent, + hashedhcpid, + hashedemail, + hashedmobile, + country, + organization, + dob, } = bidderRequest; return { @@ -91,7 +96,7 @@ function getPayload(bid, bidderRequest) { lastname: lastname, specialization: specialization, hcpid: hcpid, - gender: gender, + gender: gd, city: city, state: state, zipcode: zipcode, @@ -100,6 +105,12 @@ function getPayload(bid, bidderRequest) { privacyConsent: privacyConsent, adunit: placementId, requestId: bidId, + hashedhcpid: hashedhcpid, + hashedemail: hashedemail, + hashedmobile: hashedmobile, + country: country, + organization: organization, + dob: dob, }, }; } diff --git a/modules/docereeAdManager.md b/modules/docereeAdManager.md index 82a15cccab1..30c699c3661 100644 --- a/modules/docereeAdManager.md +++ b/modules/docereeAdManager.md @@ -42,17 +42,23 @@ pbjs.setBidderConfig({ docereeAdManager: { user: { data: { - userid: "DE.V1.138353881958.178023499", - email: "", - firstname: "RAYMOND", - lastname: "SCHONDELMEYER", - specialization: "Pediatrics", - hcpid: "9980811134", - gender: "Male", - city: "", - state: "", - zipcode: "65201", - hashedNPI: "", + email: "DALIA.WENCKUS@GMAIL.COM", + firstName: "DR. DALIA", + lastName: "WENCKUS", + mobile: "9812345675", + specialization: "Internal Medicine", + organization: "Max Lifecare", + hcpid: "1992915645", + dob: "1987-08-27", + gd: "Female", + city: "Oildale", + state: "California", + country: "California", + hashedhcpid: "", + hashedemail: "", + hashedmobile: "", + adunit: "DOC-491-1", + userid: "7d26d8ca-233a-46c2-9d36-7c5d261e151d", }, }, }, diff --git a/test/spec/modules/docereeAdManager_spec.js b/test/spec/modules/docereeAdManager_spec.js index e562b07a40c..53828a63cbf 100644 --- a/test/spec/modules/docereeAdManager_spec.js +++ b/test/spec/modules/docereeAdManager_spec.js @@ -1,122 +1,123 @@ -import { expect } from 'chai'; -import { spec } from '../../../modules/docereeAdManager.js'; -import { config } from '../../../src/config.js'; +import { expect } from "chai"; +import { spec } from "../../../modules/docereeAdManager.js"; +import { config } from "../../../src/config.js"; -describe('docereeAdManager', function () { +describe("docereeAdManager", function () { config.setConfig({ docereeAdManager: { user: { data: { - userid: '', - email: '', - firstName: '', - lastName: '', - specialization: '', - hcpid: '', - gender: '', - city: '', - state: '', - zipCode: '', - hashedNPI: '', - mobile: '', - pb: '', - privacyConsent: '', + email: "", + firstName: "", + lastName: "", + mobile: "", + specialization: "", + organization: "", + hcpid: "", + dob: "", + gd: "", + city: "", + state: "", + country: "", + hashedhcpid: "", + hashedemail: "", + hashedmobile: "", + adunit: "", + userid: "", }, }, }, }); let bid = { - bidId: 'testing', - bidder: 'docereeAdManager', + bidId: "testing", + bidder: "docereeAdManager", params: { - placementId: 'DOC-500-3', - gdpr: '1', + placementId: "DOC-500-3", + gdpr: "1", gdprConsent: - 'CPQfU1jPQfU1jG0AAAENAwCAAAAAAAAAAAAAAAAAAAAA.IGLtV_T9fb2vj-_Z99_tkeYwf95y3p-wzhheMs-8NyZeH_B4Wv2MyvBX4JiQKGRgksjLBAQdtHGlcTQgBwIlViTLMYk2MjzNKJrJEilsbO2dYGD9Pn8HT3ZCY70-vv__7v3ff_3g', + "CPQfU1jPQfU1jG0AAAENAwCAAAAAAAAAAAAAAAAAAAAA.IGLtV_T9fb2vj-_Z99_tkeYwf95y3p-wzhheMs-8NyZeH_B4Wv2MyvBX4JiQKGRgksjLBAQdtHGlcTQgBwIlViTLMYk2MjzNKJrJEilsbO2dYGD9Pn8HT3ZCY70-vv__7v3ff_3g", }, }; - describe('isBidRequestValid', function () { - it('Should return true if placementId is present', function () { + describe("isBidRequestValid", function () { + it("Should return true if placementId is present", function () { expect(spec.isBidRequestValid(bid)).to.be.true; }); - it('Should return false if placementId is not present', function () { + it("Should return false if placementId is not present", function () { delete bid.params.placementId; expect(spec.isBidRequestValid(bid)).to.be.false; }); }); - describe('isGdprConsentPresent', function () { - it('Should return true if gdpr consent is present', function () { + describe("isGdprConsentPresent", function () { + it("Should return true if gdpr consent is present", function () { expect(spec.isGdprConsentPresent(bid)).to.be.true; }); }); - describe('buildRequests', function () { + describe("buildRequests", function () { let serverRequest = spec.buildRequests([bid]); serverRequest = serverRequest[0]; - it('Creates a ServerRequest object with method, URL and data', function () { + it("Creates a ServerRequest object with method, URL and data", function () { expect(serverRequest).to.exist; expect(serverRequest.method).to.exist; expect(serverRequest.url).to.exist; expect(serverRequest.data).to.exist; }); - it('Returns POST method', function () { - expect(serverRequest.method).to.equal('POST'); + it("Returns POST method", function () { + expect(serverRequest.method).to.equal("POST"); }); - it('Returns valid URL', function () { - expect(serverRequest.url).to.equal( - 'https://dai.doceree.com' - ); + it("Returns valid URL", function () { + expect(serverRequest.url).to.equal("https://dai.doceree.com"); }); }); - describe('interpretResponse', function () { - it('Should interpret banner response', function () { + describe("interpretResponse", function () { + it("Should interpret banner response", function () { const banner = { body: { cpm: 3.576, - currency: 'USD', + currency: "USD", width: 250, height: 300, - ad: '

I am an ad

', + ad: "

I am an ad

", ttl: 30, - creativeId: 'div-1', + creativeId: "div-1", netRevenue: false, - bidderCode: '123', + bidderCode: "123", dealId: 232, - requestId: '123', + requestId: "123", meta: { brandId: null, - advertiserDomains: ['https://dai.doceree.com'], + advertiserDomains: ["https://dai.doceree.com"], }, }, }; let bannerResponses = spec.interpretResponse(banner); - expect(bannerResponses).to.be.an('array').that.is.not.empty; + expect(bannerResponses).to.be.an("array").that.is.not.empty; let dataItem = bannerResponses[0]; expect(dataItem).to.have.all.keys( - 'requestId', - 'cpm', - 'width', - 'height', - 'ad', - 'ttl', - 'netRevenue', - 'currency', - 'mediaType', - 'creativeId', - 'meta' + "requestId", + "cpm", + "width", + "height", + "ad", + "ttl", + "netRevenue", + "currency", + "mediaType", + "creativeId", + "meta" ); - expect(dataItem.requestId).to.equal('123'); + expect(dataItem.requestId).to.equal("123"); expect(dataItem.cpm).to.equal(3.576); expect(dataItem.width).to.equal(250); expect(dataItem.height).to.equal(300); - expect(dataItem.ad).to.equal('

I am an ad

'); + expect(dataItem.ad).to.equal("

I am an ad

"); expect(dataItem.ttl).to.equal(30); expect(dataItem.netRevenue).to.be.true; - expect(dataItem.currency).to.equal('USD'); - expect(dataItem.creativeId).to.equal('div-1'); - expect(dataItem.meta.advertiserDomains).to.be.an('array').that.is.not + expect(dataItem.currency).to.equal("USD"); + expect(dataItem.creativeId).to.equal("div-1"); + expect(dataItem.meta.advertiserDomains).to.be.an("array").that.is.not .empty; }); }); From e520aef3fdfdf8947006d4b13eb151d7cbe2f32e Mon Sep 17 00:00:00 2001 From: sagar4596 <132884303+sagar4596@users.noreply.github.com> Date: Tue, 31 Oct 2023 17:56:26 +0530 Subject: [PATCH 04/21] md file changes --- modules/docereeAdManager.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/docereeAdManager.md b/modules/docereeAdManager.md index 30c699c3661..8afba6db08c 100644 --- a/modules/docereeAdManager.md +++ b/modules/docereeAdManager.md @@ -1,7 +1,7 @@ # Overview ``` -Module Name: Doceree AdManager Adapter +Module Name: Doceree AdManager Bidder Adapter Module Type: Bidder Adapter Maintainer: tech.stack@doceree.com ``` From 537a8c223dbeb49941c0db6fa85c0eb6df67cb04 Mon Sep 17 00:00:00 2001 From: sagar4596 <132884303+sagar4596@users.noreply.github.com> Date: Tue, 31 Oct 2023 18:08:01 +0530 Subject: [PATCH 05/21] double quotes to singlequotes --- modules/docereeAdManager.js | 24 ++-- modules/docereeAdManager.md | 38 +++---- test/spec/modules/docereeAdManager_spec.js | 124 ++++++++++----------- 3 files changed, 93 insertions(+), 93 deletions(-) diff --git a/modules/docereeAdManager.js b/modules/docereeAdManager.js index 20a2bf28283..b0179e5f3bb 100644 --- a/modules/docereeAdManager.js +++ b/modules/docereeAdManager.js @@ -1,12 +1,12 @@ -import { registerBidder } from "../src/adapters/bidderFactory.js"; -import { config } from "../src/config.js"; -import { BANNER } from "../src/mediaTypes.js"; -const BIDDER_CODE = "docereeAdManager"; -const END_POINT = "https://dai.doceree.com"; +import { registerBidder } from '../src/adapters/bidderFactory.js'; +import { config } from '../src/config.js'; +import { BANNER } from '../src/mediaTypes.js'; +const BIDDER_CODE = 'docereeAdManager'; +const END_POINT = 'https://dai.doceree.com'; export const spec = { code: BIDDER_CODE, - url: "", + url: '', supportedMediaTypes: [BANNER], isBidRequestValid: (bid) => { @@ -15,26 +15,26 @@ export const spec = { }, isGdprConsentPresent: (bid) => { const { gdpr, gdprConsent } = bid.params; - if (gdpr == "1") { + if (gdpr == '1') { return !!gdprConsent; } return true; }, buildRequests: (validBidRequests) => { const serverRequests = []; - const { data } = config.getConfig("docereeAdManager.user"); + const { data } = config.getConfig('docereeAdManager.user'); // TODO: this should probably look at refererInfo - // const { page, domain, token } = config.getConfig("customAdapter.context"); + // const { page, domain, token } = config.getConfig('customAdapter.context'); validBidRequests.forEach(function (validBidRequest) { const payload = getPayload(validBidRequest, data); serverRequests.push({ - method: "POST", + method: 'POST', url: END_POINT, data: JSON.stringify(payload.data), options: { - contentType: "application/json", + contentType: 'application/json', withCredentials: true, }, }); @@ -53,7 +53,7 @@ export const spec = { ttl: 30, cpm: responseJson.cpm, currency: responseJson.currency, - mediaType: "banner", + mediaType: 'banner', creativeId: responseJson.creativeId, meta: { advertiserDomains: [responseJson.meta.advertiserDomains], diff --git a/modules/docereeAdManager.md b/modules/docereeAdManager.md index 8afba6db08c..78b2726bfbe 100644 --- a/modules/docereeAdManager.md +++ b/modules/docereeAdManager.md @@ -22,7 +22,7 @@ var adUnits = [ ], bids: [ { - bidder: "docereeAdManager", + bidder: 'docereeAdManager', params: { placementId: 'DOC-500-3', //required publisherUrl: document.URL || window.location.href, //optional @@ -37,28 +37,28 @@ var adUnits = [ ```javascript pbjs.setBidderConfig({ - bidders: ["docereeAdManager"], + bidders: ['docereeAdManager'], config: { docereeAdManager: { user: { data: { - email: "DALIA.WENCKUS@GMAIL.COM", - firstName: "DR. DALIA", - lastName: "WENCKUS", - mobile: "9812345675", - specialization: "Internal Medicine", - organization: "Max Lifecare", - hcpid: "1992915645", - dob: "1987-08-27", - gd: "Female", - city: "Oildale", - state: "California", - country: "California", - hashedhcpid: "", - hashedemail: "", - hashedmobile: "", - adunit: "DOC-491-1", - userid: "7d26d8ca-233a-46c2-9d36-7c5d261e151d", + email: 'DALIA.WENCKUS@GMAIL.COM', + firstName: 'DR. DALIA', + lastName: 'WENCKUS', + mobile: '9812345675', + specialization: 'Internal Medicine', + organization: 'Max Lifecare', + hcpid: '1992915645', + dob: '1987-08-27', + gd: 'Female', + city: 'Oildale', + state: 'California', + country: 'California', + hashedhcpid: '', + hashedemail: '', + hashedmobile: '', + adunit: 'DOC-491-1', + userid: '7d26d8ca-233a-46c2-9d36-7c5d261e151d', }, }, }, diff --git a/test/spec/modules/docereeAdManager_spec.js b/test/spec/modules/docereeAdManager_spec.js index 53828a63cbf..6db6ae5fcc7 100644 --- a/test/spec/modules/docereeAdManager_spec.js +++ b/test/spec/modules/docereeAdManager_spec.js @@ -1,123 +1,123 @@ -import { expect } from "chai"; -import { spec } from "../../../modules/docereeAdManager.js"; -import { config } from "../../../src/config.js"; +import { expect } from 'chai'; +import { spec } from '../../../modules/docereeAdManager.js'; +import { config } from '../../../src/config.js'; -describe("docereeAdManager", function () { +describe('docereeAdManager', function () { config.setConfig({ docereeAdManager: { user: { data: { - email: "", - firstName: "", - lastName: "", - mobile: "", - specialization: "", - organization: "", - hcpid: "", - dob: "", - gd: "", - city: "", - state: "", - country: "", - hashedhcpid: "", - hashedemail: "", - hashedmobile: "", - adunit: "", - userid: "", + email: '', + firstName: '', + lastName: '', + mobile: '', + specialization: '', + organization: '', + hcpid: '', + dob: '', + gd: '', + city: '', + state: '', + country: '', + hashedhcpid: '', + hashedemail: '', + hashedmobile: '', + adunit: '', + userid: '', }, }, }, }); let bid = { - bidId: "testing", - bidder: "docereeAdManager", + bidId: 'testing', + bidder: 'docereeAdManager', params: { - placementId: "DOC-500-3", - gdpr: "1", + placementId: 'DOC-500-3', + gdpr: '1', gdprConsent: - "CPQfU1jPQfU1jG0AAAENAwCAAAAAAAAAAAAAAAAAAAAA.IGLtV_T9fb2vj-_Z99_tkeYwf95y3p-wzhheMs-8NyZeH_B4Wv2MyvBX4JiQKGRgksjLBAQdtHGlcTQgBwIlViTLMYk2MjzNKJrJEilsbO2dYGD9Pn8HT3ZCY70-vv__7v3ff_3g", + 'CPQfU1jPQfU1jG0AAAENAwCAAAAAAAAAAAAAAAAAAAAA.IGLtV_T9fb2vj-_Z99_tkeYwf95y3p-wzhheMs-8NyZeH_B4Wv2MyvBX4JiQKGRgksjLBAQdtHGlcTQgBwIlViTLMYk2MjzNKJrJEilsbO2dYGD9Pn8HT3ZCY70-vv__7v3ff_3g', }, }; - describe("isBidRequestValid", function () { - it("Should return true if placementId is present", function () { + describe('isBidRequestValid', function () { + it('Should return true if placementId is present', function () { expect(spec.isBidRequestValid(bid)).to.be.true; }); - it("Should return false if placementId is not present", function () { + it('Should return false if placementId is not present', function () { delete bid.params.placementId; expect(spec.isBidRequestValid(bid)).to.be.false; }); }); - describe("isGdprConsentPresent", function () { - it("Should return true if gdpr consent is present", function () { + describe('isGdprConsentPresent', function () { + it('Should return true if gdpr consent is present', function () { expect(spec.isGdprConsentPresent(bid)).to.be.true; }); }); - describe("buildRequests", function () { + describe('buildRequests', function () { let serverRequest = spec.buildRequests([bid]); serverRequest = serverRequest[0]; - it("Creates a ServerRequest object with method, URL and data", function () { + it('Creates a ServerRequest object with method, URL and data', function () { expect(serverRequest).to.exist; expect(serverRequest.method).to.exist; expect(serverRequest.url).to.exist; expect(serverRequest.data).to.exist; }); - it("Returns POST method", function () { - expect(serverRequest.method).to.equal("POST"); + it('Returns POST method', function () { + expect(serverRequest.method).to.equal('POST'); }); - it("Returns valid URL", function () { - expect(serverRequest.url).to.equal("https://dai.doceree.com"); + it('Returns valid URL', function () { + expect(serverRequest.url).to.equal('https://dai.doceree.com'); }); }); - describe("interpretResponse", function () { - it("Should interpret banner response", function () { + describe('interpretResponse', function () { + it('Should interpret banner response', function () { const banner = { body: { cpm: 3.576, - currency: "USD", + currency: 'USD', width: 250, height: 300, - ad: "

I am an ad

", + ad: '

I am an ad

', ttl: 30, - creativeId: "div-1", + creativeId: 'div-1', netRevenue: false, - bidderCode: "123", + bidderCode: '123', dealId: 232, - requestId: "123", + requestId: '123', meta: { brandId: null, - advertiserDomains: ["https://dai.doceree.com"], + advertiserDomains: ['https://dai.doceree.com'], }, }, }; let bannerResponses = spec.interpretResponse(banner); - expect(bannerResponses).to.be.an("array").that.is.not.empty; + expect(bannerResponses).to.be.an('array').that.is.not.empty; let dataItem = bannerResponses[0]; expect(dataItem).to.have.all.keys( - "requestId", - "cpm", - "width", - "height", - "ad", - "ttl", - "netRevenue", - "currency", - "mediaType", - "creativeId", - "meta" + 'requestId', + 'cpm', + 'width', + 'height', + 'ad', + 'ttl', + 'netRevenue', + 'currency', + 'mediaType', + 'creativeId', + 'meta' ); - expect(dataItem.requestId).to.equal("123"); + expect(dataItem.requestId).to.equal('123'); expect(dataItem.cpm).to.equal(3.576); expect(dataItem.width).to.equal(250); expect(dataItem.height).to.equal(300); - expect(dataItem.ad).to.equal("

I am an ad

"); + expect(dataItem.ad).to.equal('

I am an ad

'); expect(dataItem.ttl).to.equal(30); expect(dataItem.netRevenue).to.be.true; - expect(dataItem.currency).to.equal("USD"); - expect(dataItem.creativeId).to.equal("div-1"); - expect(dataItem.meta.advertiserDomains).to.be.an("array").that.is.not + expect(dataItem.currency).to.equal('USD'); + expect(dataItem.creativeId).to.equal('div-1'); + expect(dataItem.meta.advertiserDomains).to.be.an('array').that.is.not .empty; }); }); From 5b0c50282935415e499c85197a244aae5bea80e9 Mon Sep 17 00:00:00 2001 From: sagar4596 <132884303+sagar4596@users.noreply.github.com> Date: Thu, 2 Nov 2023 12:42:42 +0530 Subject: [PATCH 06/21] removed unwanted code --- modules/docereeAdManager.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/modules/docereeAdManager.js b/modules/docereeAdManager.js index b0179e5f3bb..ee3e44462f3 100644 --- a/modules/docereeAdManager.js +++ b/modules/docereeAdManager.js @@ -24,9 +24,6 @@ export const spec = { const serverRequests = []; const { data } = config.getConfig('docereeAdManager.user'); - // TODO: this should probably look at refererInfo - // const { page, domain, token } = config.getConfig('customAdapter.context'); - validBidRequests.forEach(function (validBidRequest) { const payload = getPayload(validBidRequest, data); serverRequests.push({ From 63c0e45a4bf8c440293473a90aa4fe07c60191a2 Mon Sep 17 00:00:00 2001 From: sagar4596 <132884303+sagar4596@users.noreply.github.com> Date: Thu, 2 Nov 2023 14:48:47 +0530 Subject: [PATCH 07/21] empty commit From bc52b6bfa754d163cc3aa7cde30bd72413c3b7c8 Mon Sep 17 00:00:00 2001 From: Doceree-techStack Date: Thu, 9 Nov 2023 12:39:20 +0530 Subject: [PATCH 08/21] bidder name lower cased and few configs added --- modules/docereeAdManager.js | 17 ++++++++--------- modules/docereeAdManager.md | 15 ++++++++------- test/spec/modules/docereeAdManager_spec.js | 19 ++++++++++--------- 3 files changed, 26 insertions(+), 25 deletions(-) diff --git a/modules/docereeAdManager.js b/modules/docereeAdManager.js index ee3e44462f3..07c5dbe94a6 100644 --- a/modules/docereeAdManager.js +++ b/modules/docereeAdManager.js @@ -1,8 +1,8 @@ import { registerBidder } from '../src/adapters/bidderFactory.js'; import { config } from '../src/config.js'; import { BANNER } from '../src/mediaTypes.js'; -const BIDDER_CODE = 'docereeAdManager'; -const END_POINT = 'https://dai.doceree.com'; +const BIDDER_CODE = 'docereeadmanager'; +const END_POINT = 'https://dai.doceree.com/drs/quest'; export const spec = { code: BIDDER_CODE, @@ -14,15 +14,15 @@ export const spec = { return !!placementId; }, isGdprConsentPresent: (bid) => { - const { gdpr, gdprConsent } = bid.params; + const { gdpr, gdprconsent } = bid.params; if (gdpr == '1') { - return !!gdprConsent; + return !!gdprconsent; } return true; }, buildRequests: (validBidRequests) => { const serverRequests = []; - const { data } = config.getConfig('docereeAdManager.user'); + const { data } = config.getConfig('docereeadmanager.user'); validBidRequests.forEach(function (validBidRequest) { const payload = getPayload(validBidRequest, data); @@ -71,12 +71,11 @@ function getPayload(bid, bidderRequest) { lastname, specialization, hcpid, - gd, + gender, city, state, zipcode, hashedNPI, - privacyConsent, hashedhcpid, hashedemail, hashedmobile, @@ -93,13 +92,12 @@ function getPayload(bid, bidderRequest) { lastname: lastname, specialization: specialization, hcpid: hcpid, - gender: gd, + gender: gender, city: city, state: state, zipcode: zipcode, hashedNPI: hashedNPI, pb: 1, - privacyConsent: privacyConsent, adunit: placementId, requestId: bidId, hashedhcpid: hashedhcpid, @@ -108,6 +106,7 @@ function getPayload(bid, bidderRequest) { country: country, organization: organization, dob: dob, + userconsent: 1, }, }; } diff --git a/modules/docereeAdManager.md b/modules/docereeAdManager.md index 78b2726bfbe..1f00c9ec488 100644 --- a/modules/docereeAdManager.md +++ b/modules/docereeAdManager.md @@ -9,7 +9,7 @@ Maintainer: tech.stack@doceree.com Connects to Doceree demand source to fetch bids. -Please use `docereeAdManager` as the bidder code. +Please use `docereeadmanager` as the bidder code. # Test Parameters @@ -22,12 +22,12 @@ var adUnits = [ ], bids: [ { - bidder: 'docereeAdManager', + bidder: 'docereeadmanager', params: { placementId: 'DOC-500-3', //required publisherUrl: document.URL || window.location.href, //optional gdpr: '1', //optional - gdprConsent:'CPQfU1jPQfU1jG0AAAENAwCAAAAAAAAAAAAAAAAAAAAA.IGLtV_T9fb2vj-_Z99_tkeYwf95y3p-wzhheMs-8NyZeH_B4Wv2MyvBX4JiQKGRgksjLBAQdtHGlcTQgBwIlViTLMYk2MjzNKJrJEilsbO2dYGD9Pn8HT3ZCY70-vv__7v3ff_3g', //optional + gdprconsent:'CPQfU1jPQfU1jG0AAAENAwCAAAAAAAAAAAAAAAAAAAAA.IGLtV_T9fb2vj-_Z99_tkeYwf95y3p-wzhheMs-8NyZeH_B4Wv2MyvBX4JiQKGRgksjLBAQdtHGlcTQgBwIlViTLMYk2MjzNKJrJEilsbO2dYGD9Pn8HT3ZCY70-vv__7v3ff_3g', //optional } } ] @@ -43,22 +43,23 @@ pbjs.setBidderConfig({ user: { data: { email: 'DALIA.WENCKUS@GMAIL.COM', - firstName: 'DR. DALIA', - lastName: 'WENCKUS', + firstname: 'DR. DALIA', + lastname: 'WENCKUS', mobile: '9812345675', specialization: 'Internal Medicine', organization: 'Max Lifecare', hcpid: '1992915645', dob: '1987-08-27', - gd: 'Female', + gender: 'Female', city: 'Oildale', state: 'California', country: 'California', hashedhcpid: '', hashedemail: '', hashedmobile: '', - adunit: 'DOC-491-1', userid: '7d26d8ca-233a-46c2-9d36-7c5d261e151d', + zipcode: '', + userconsent: '1', }, }, }, diff --git a/test/spec/modules/docereeAdManager_spec.js b/test/spec/modules/docereeAdManager_spec.js index 6db6ae5fcc7..e12856c91e0 100644 --- a/test/spec/modules/docereeAdManager_spec.js +++ b/test/spec/modules/docereeAdManager_spec.js @@ -2,35 +2,36 @@ import { expect } from 'chai'; import { spec } from '../../../modules/docereeAdManager.js'; import { config } from '../../../src/config.js'; -describe('docereeAdManager', function () { +describe('docereeadmanager', function () { config.setConfig({ - docereeAdManager: { + docereeadmanager: { user: { data: { email: '', - firstName: '', - lastName: '', + firstname: '', + lastname: '', mobile: '', specialization: '', organization: '', hcpid: '', dob: '', - gd: '', + gender: '', city: '', state: '', country: '', hashedhcpid: '', hashedemail: '', hashedmobile: '', - adunit: '', userid: '', + zipcode: '', + userconsent: '', }, }, }, }); let bid = { bidId: 'testing', - bidder: 'docereeAdManager', + bidder: 'docereeadmanager', params: { placementId: 'DOC-500-3', gdpr: '1', @@ -68,7 +69,7 @@ describe('docereeAdManager', function () { expect(serverRequest.method).to.equal('POST'); }); it('Returns valid URL', function () { - expect(serverRequest.url).to.equal('https://dai.doceree.com'); + expect(serverRequest.url).to.equal('https://dai.doceree.com/drs/quest'); }); }); describe('interpretResponse', function () { @@ -88,7 +89,7 @@ describe('docereeAdManager', function () { requestId: '123', meta: { brandId: null, - advertiserDomains: ['https://dai.doceree.com'], + advertiserDomains: ['https://dai.doceree.com/drs/quest'], }, }, }; From ea533b1906cf427e1870b4cfb077e3c53d72057a Mon Sep 17 00:00:00 2001 From: Doceree-techStack Date: Thu, 9 Nov 2023 12:42:06 +0530 Subject: [PATCH 09/21] md file changes --- modules/docereeAdManager.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/docereeAdManager.md b/modules/docereeAdManager.md index 1f00c9ec488..e8bf2d83c32 100644 --- a/modules/docereeAdManager.md +++ b/modules/docereeAdManager.md @@ -37,9 +37,9 @@ var adUnits = [ ```javascript pbjs.setBidderConfig({ - bidders: ['docereeAdManager'], + bidders: ['docereeadmanager'], config: { - docereeAdManager: { + docereeadmanager: { user: { data: { email: 'DALIA.WENCKUS@GMAIL.COM', From e9ca9511787230ffcb2da780fd4ab379d2ae8f57 Mon Sep 17 00:00:00 2001 From: Doceree-techStack Date: Thu, 9 Nov 2023 13:01:35 +0530 Subject: [PATCH 10/21] spec file changes --- test/spec/modules/docereeAdManager_spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/spec/modules/docereeAdManager_spec.js b/test/spec/modules/docereeAdManager_spec.js index e12856c91e0..535ee3116c1 100644 --- a/test/spec/modules/docereeAdManager_spec.js +++ b/test/spec/modules/docereeAdManager_spec.js @@ -35,7 +35,7 @@ describe('docereeadmanager', function () { params: { placementId: 'DOC-500-3', gdpr: '1', - gdprConsent: + gdprconsent: 'CPQfU1jPQfU1jG0AAAENAwCAAAAAAAAAAAAAAAAAAAAA.IGLtV_T9fb2vj-_Z99_tkeYwf95y3p-wzhheMs-8NyZeH_B4Wv2MyvBX4JiQKGRgksjLBAQdtHGlcTQgBwIlViTLMYk2MjzNKJrJEilsbO2dYGD9Pn8HT3ZCY70-vv__7v3ff_3g', }, }; From 3f4baf00826f6c54caaee59dc9c392a09522c7a8 Mon Sep 17 00:00:00 2001 From: Doceree-techStack Date: Thu, 9 Nov 2023 14:26:07 +0530 Subject: [PATCH 11/21] empty commit From d17793832338fd160e01b6f1339502686b066a73 Mon Sep 17 00:00:00 2001 From: Doceree-techStack Date: Thu, 9 Nov 2023 14:44:59 +0530 Subject: [PATCH 12/21] empty commit From 0dcb61fd58bd0701f33d5716580f5e22f7164f5e Mon Sep 17 00:00:00 2001 From: Doceree-techStack Date: Sat, 11 Nov 2023 16:31:39 +0530 Subject: [PATCH 13/21] issues resolved --- ...nager.js => docereeAdManagerBidAdapter.js} | 19 ++++++++++++++----- ...nager.md => docereeAdManagerBidAdapter.md} | 12 ++++++------ ....js => docereeAdManagerBidAdapter_spec.js} | 4 ++-- 3 files changed, 22 insertions(+), 13 deletions(-) rename modules/{docereeAdManager.js => docereeAdManagerBidAdapter.js} (85%) rename modules/{docereeAdManager.md => docereeAdManagerBidAdapter.md} (86%) rename test/spec/modules/{docereeAdManager_spec.js => docereeAdManagerBidAdapter_spec.js} (97%) diff --git a/modules/docereeAdManager.js b/modules/docereeAdManagerBidAdapter.js similarity index 85% rename from modules/docereeAdManager.js rename to modules/docereeAdManagerBidAdapter.js index 07c5dbe94a6..f08ba331233 100644 --- a/modules/docereeAdManager.js +++ b/modules/docereeAdManagerBidAdapter.js @@ -22,10 +22,15 @@ export const spec = { }, buildRequests: (validBidRequests) => { const serverRequests = []; - const { data } = config.getConfig('docereeadmanager.user'); + const { data } = config.getConfig('docereeadmanager.user') || {}; validBidRequests.forEach(function (validBidRequest) { const payload = getPayload(validBidRequest, data); + + if (!payload) { + return; + } + serverRequests.push({ method: 'POST', url: END_POINT, @@ -50,10 +55,14 @@ export const spec = { ttl: 30, cpm: responseJson.cpm, currency: responseJson.currency, - mediaType: 'banner', + mediaType: BANNER, creativeId: responseJson.creativeId, meta: { - advertiserDomains: [responseJson.meta.advertiserDomains], + advertiserDomains: + Array.isArray(responseJson.meta.advertiserDomains) && + responseJson.meta.advertiserDomains.length > 0 + ? responseJson.meta.advertiserDomains + : [], }, }; @@ -61,7 +70,7 @@ export const spec = { }, }; -function getPayload(bid, bidderRequest) { +function getPayload(bid, userData) { const { bidId, params } = bid; const { placementId } = params; const { @@ -82,7 +91,7 @@ function getPayload(bid, bidderRequest) { country, organization, dob, - } = bidderRequest; + } = userData; return { data: { diff --git a/modules/docereeAdManager.md b/modules/docereeAdManagerBidAdapter.md similarity index 86% rename from modules/docereeAdManager.md rename to modules/docereeAdManagerBidAdapter.md index e8bf2d83c32..bedbf57b179 100644 --- a/modules/docereeAdManager.md +++ b/modules/docereeAdManagerBidAdapter.md @@ -24,7 +24,7 @@ var adUnits = [ { bidder: 'docereeadmanager', params: { - placementId: 'DOC-500-3', //required + placementId: 'DOC-19-1', //required publisherUrl: document.URL || window.location.href, //optional gdpr: '1', //optional gdprconsent:'CPQfU1jPQfU1jG0AAAENAwCAAAAAAAAAAAAAAAAAAAAA.IGLtV_T9fb2vj-_Z99_tkeYwf95y3p-wzhheMs-8NyZeH_B4Wv2MyvBX4JiQKGRgksjLBAQdtHGlcTQgBwIlViTLMYk2MjzNKJrJEilsbO2dYGD9Pn8HT3ZCY70-vv__7v3ff_3g', //optional @@ -42,13 +42,13 @@ pbjs.setBidderConfig({ docereeadmanager: { user: { data: { - email: 'DALIA.WENCKUS@GMAIL.COM', - firstname: 'DR. DALIA', - lastname: 'WENCKUS', - mobile: '9812345675', + email: 'XXX.XXX@GMAIL.COM', + firstname: 'DR. XXX', + lastname: 'XXX', + mobile: '981234XXXX', specialization: 'Internal Medicine', organization: 'Max Lifecare', - hcpid: '1992915645', + hcpid: '199291XXXX', dob: '1987-08-27', gender: 'Female', city: 'Oildale', diff --git a/test/spec/modules/docereeAdManager_spec.js b/test/spec/modules/docereeAdManagerBidAdapter_spec.js similarity index 97% rename from test/spec/modules/docereeAdManager_spec.js rename to test/spec/modules/docereeAdManagerBidAdapter_spec.js index 535ee3116c1..26b054f4e29 100644 --- a/test/spec/modules/docereeAdManager_spec.js +++ b/test/spec/modules/docereeAdManagerBidAdapter_spec.js @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { spec } from '../../../modules/docereeAdManager.js'; +import { spec } from '../../../modules/docereeAdManagerBidAdapter.js'; import { config } from '../../../src/config.js'; describe('docereeadmanager', function () { @@ -33,7 +33,7 @@ describe('docereeadmanager', function () { bidId: 'testing', bidder: 'docereeadmanager', params: { - placementId: 'DOC-500-3', + placementId: 'DOC-19-1', gdpr: '1', gdprconsent: 'CPQfU1jPQfU1jG0AAAENAwCAAAAAAAAAAAAAAAAAAAAA.IGLtV_T9fb2vj-_Z99_tkeYwf95y3p-wzhheMs-8NyZeH_B4Wv2MyvBX4JiQKGRgksjLBAQdtHGlcTQgBwIlViTLMYk2MjzNKJrJEilsbO2dYGD9Pn8HT3ZCY70-vv__7v3ff_3g', From f11782636e589f9f18443d773afe83ae46b75fd8 Mon Sep 17 00:00:00 2001 From: Doceree-techStack Date: Sat, 11 Nov 2023 18:25:47 +0530 Subject: [PATCH 14/21] empty commit From 631a7c562bca0613c9baeb67c5e26f485ed26b49 Mon Sep 17 00:00:00 2001 From: Doceree-techStack Date: Wed, 15 Nov 2023 13:37:53 +0530 Subject: [PATCH 15/21] issue fixes --- modules/docereeAdManagerBidAdapter.js | 71 ++++++++++++++------------- 1 file changed, 38 insertions(+), 33 deletions(-) diff --git a/modules/docereeAdManagerBidAdapter.js b/modules/docereeAdManagerBidAdapter.js index f08ba331233..8e4d55d4d8e 100644 --- a/modules/docereeAdManagerBidAdapter.js +++ b/modules/docereeAdManagerBidAdapter.js @@ -1,12 +1,12 @@ -import { registerBidder } from '../src/adapters/bidderFactory.js'; -import { config } from '../src/config.js'; -import { BANNER } from '../src/mediaTypes.js'; -const BIDDER_CODE = 'docereeadmanager'; -const END_POINT = 'https://dai.doceree.com/drs/quest'; +import { registerBidder } from "../src/adapters/bidderFactory.js"; +import { config } from "../src/config.js"; +import { BANNER } from "../src/mediaTypes.js"; +const BIDDER_CODE = "docereeadmanager"; +const END_POINT = "https://dai.doceree.com/drs/quest"; export const spec = { code: BIDDER_CODE, - url: '', + url: "", supportedMediaTypes: [BANNER], isBidRequestValid: (bid) => { @@ -15,14 +15,14 @@ export const spec = { }, isGdprConsentPresent: (bid) => { const { gdpr, gdprconsent } = bid.params; - if (gdpr == '1') { + if (gdpr == "1") { return !!gdprconsent; } return true; }, buildRequests: (validBidRequests) => { const serverRequests = []; - const { data } = config.getConfig('docereeadmanager.user') || {}; + const { data } = config.getConfig("docereeadmanager.user") || {}; validBidRequests.forEach(function (validBidRequest) { const payload = getPayload(validBidRequest, data); @@ -32,11 +32,11 @@ export const spec = { } serverRequests.push({ - method: 'POST', + method: "POST", url: END_POINT, data: JSON.stringify(payload.data), options: { - contentType: 'application/json', + contentType: "application/json", withCredentials: true, }, }); @@ -71,6 +71,10 @@ export const spec = { }; function getPayload(bid, userData) { + if (!userData || !bid || bid.length === 0) { + return false; + } + const { bidId, params } = bid; const { placementId } = params; const { @@ -93,30 +97,31 @@ function getPayload(bid, userData) { dob, } = userData; + const data = { + userid: userid ? userid : "", + email: email ? email : "", + firstname: firstname ? firstname : "", + lastname: lastname ? lastname : "", + specialization: specialization ? specialization : "", + hcpid: hcpid ? hcpid : "", + gender: gender ? gender : "", + city: city ? city : "", + state: state ? state : "", + zipcode: zipcode ? zipcode : "", + hashedNPI: hashedNPI ? hashedNPI : "", + pb: 1, + adunit: placementId ? placementId : "", + requestId: bidId ? bidId : "", + hashedhcpid: hashedhcpid ? hashedhcpid : "", + hashedemail: hashedemail ? hashedemail : "", + hashedmobile: hashedmobile ? hashedmobile : "", + country: country ? country : "", + organization: organization ? organization : "", + dob: dob ? dob : "", + userconsent: 1, + }; return { - data: { - userid: userid, - email: email, - firstname: firstname, - lastname: lastname, - specialization: specialization, - hcpid: hcpid, - gender: gender, - city: city, - state: state, - zipcode: zipcode, - hashedNPI: hashedNPI, - pb: 1, - adunit: placementId, - requestId: bidId, - hashedhcpid: hashedhcpid, - hashedemail: hashedemail, - hashedmobile: hashedmobile, - country: country, - organization: organization, - dob: dob, - userconsent: 1, - }, + data, }; } From da3d6a15f5934cf28863856b4143a6fd80ffb110 Mon Sep 17 00:00:00 2001 From: Doceree-techStack Date: Wed, 15 Nov 2023 13:39:00 +0530 Subject: [PATCH 16/21] minor change --- modules/docereeAdManagerBidAdapter.js | 58 +++++++++++++-------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/modules/docereeAdManagerBidAdapter.js b/modules/docereeAdManagerBidAdapter.js index 8e4d55d4d8e..8ea360b4b4a 100644 --- a/modules/docereeAdManagerBidAdapter.js +++ b/modules/docereeAdManagerBidAdapter.js @@ -1,12 +1,12 @@ -import { registerBidder } from "../src/adapters/bidderFactory.js"; -import { config } from "../src/config.js"; -import { BANNER } from "../src/mediaTypes.js"; -const BIDDER_CODE = "docereeadmanager"; -const END_POINT = "https://dai.doceree.com/drs/quest"; +import { registerBidder } from '../src/adapters/bidderFactory.js'; +import { config } from '../src/config.js'; +import { BANNER } from '../src/mediaTypes.js'; +const BIDDER_CODE = 'docereeadmanager'; +const END_POINT = 'https://dai.doceree.com/drs/quest'; export const spec = { code: BIDDER_CODE, - url: "", + url: '', supportedMediaTypes: [BANNER], isBidRequestValid: (bid) => { @@ -15,14 +15,14 @@ export const spec = { }, isGdprConsentPresent: (bid) => { const { gdpr, gdprconsent } = bid.params; - if (gdpr == "1") { + if (gdpr == '1') { return !!gdprconsent; } return true; }, buildRequests: (validBidRequests) => { const serverRequests = []; - const { data } = config.getConfig("docereeadmanager.user") || {}; + const { data } = config.getConfig('docereeadmanager.user') || {}; validBidRequests.forEach(function (validBidRequest) { const payload = getPayload(validBidRequest, data); @@ -32,11 +32,11 @@ export const spec = { } serverRequests.push({ - method: "POST", + method: 'POST', url: END_POINT, data: JSON.stringify(payload.data), options: { - contentType: "application/json", + contentType: 'application/json', withCredentials: true, }, }); @@ -98,26 +98,26 @@ function getPayload(bid, userData) { } = userData; const data = { - userid: userid ? userid : "", - email: email ? email : "", - firstname: firstname ? firstname : "", - lastname: lastname ? lastname : "", - specialization: specialization ? specialization : "", - hcpid: hcpid ? hcpid : "", - gender: gender ? gender : "", - city: city ? city : "", - state: state ? state : "", - zipcode: zipcode ? zipcode : "", - hashedNPI: hashedNPI ? hashedNPI : "", + userid: userid ? userid : '', + email: email ? email : '', + firstname: firstname ? firstname : '', + lastname: lastname ? lastname : '', + specialization: specialization ? specialization : '', + hcpid: hcpid ? hcpid : '', + gender: gender ? gender : '', + city: city ? city : '', + state: state ? state : '', + zipcode: zipcode ? zipcode : '', + hashedNPI: hashedNPI ? hashedNPI : '', pb: 1, - adunit: placementId ? placementId : "", - requestId: bidId ? bidId : "", - hashedhcpid: hashedhcpid ? hashedhcpid : "", - hashedemail: hashedemail ? hashedemail : "", - hashedmobile: hashedmobile ? hashedmobile : "", - country: country ? country : "", - organization: organization ? organization : "", - dob: dob ? dob : "", + adunit: placementId ? placementId : '', + requestId: bidId ? bidId : '', + hashedhcpid: hashedhcpid ? hashedhcpid : '', + hashedemail: hashedemail ? hashedemail : '', + hashedmobile: hashedmobile ? hashedmobile : '', + country: country ? country : '', + organization: organization ? organization : '', + dob: dob ? dob : '', userconsent: 1, }; return { From e0d70c9f086b4c5f7157d877da3d72917e244d8d Mon Sep 17 00:00:00 2001 From: Doceree-techStack Date: Wed, 15 Nov 2023 13:42:24 +0530 Subject: [PATCH 17/21] empty commit From ced84ad54ce348e0037bf57c039cfca4b2f38f1d Mon Sep 17 00:00:00 2001 From: Doceree-techStack Date: Wed, 15 Nov 2023 13:49:46 +0530 Subject: [PATCH 18/21] minor change --- modules/docereeAdManagerBidAdapter.js | 38 +++++++++++++-------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/modules/docereeAdManagerBidAdapter.js b/modules/docereeAdManagerBidAdapter.js index 8ea360b4b4a..38921981b12 100644 --- a/modules/docereeAdManagerBidAdapter.js +++ b/modules/docereeAdManagerBidAdapter.js @@ -98,26 +98,26 @@ function getPayload(bid, userData) { } = userData; const data = { - userid: userid ? userid : '', - email: email ? email : '', - firstname: firstname ? firstname : '', - lastname: lastname ? lastname : '', - specialization: specialization ? specialization : '', - hcpid: hcpid ? hcpid : '', - gender: gender ? gender : '', - city: city ? city : '', - state: state ? state : '', - zipcode: zipcode ? zipcode : '', - hashedNPI: hashedNPI ? hashedNPI : '', + userid: userid || '', + email: email || '', + firstname: firstname || '', + lastname: lastname || '', + specialization: specialization || '', + hcpid: hcpid || '', + gender: gender || '', + city: city || '', + state: state || '', + zipcode: zipcode || '', + hashedNPI: hashedNPI || '', pb: 1, - adunit: placementId ? placementId : '', - requestId: bidId ? bidId : '', - hashedhcpid: hashedhcpid ? hashedhcpid : '', - hashedemail: hashedemail ? hashedemail : '', - hashedmobile: hashedmobile ? hashedmobile : '', - country: country ? country : '', - organization: organization ? organization : '', - dob: dob ? dob : '', + adunit: placementId || '', + requestId: bidId || '', + hashedhcpid: hashedhcpid || '', + hashedemail: hashedemail || '', + hashedmobile: hashedmobile || '', + country: country || '', + organization: organization || '', + dob: dob || '', userconsent: 1, }; return { From 6c38c301ea9028f2dd8933196315f1b60c31f621 Mon Sep 17 00:00:00 2001 From: Doceree-techStack Date: Wed, 15 Nov 2023 14:33:58 +0530 Subject: [PATCH 19/21] empty commit From e08131c95efe913159d71eec42e20b7abe77673a Mon Sep 17 00:00:00 2001 From: Doceree-techStack Date: Wed, 15 Nov 2023 15:04:14 +0530 Subject: [PATCH 20/21] conditional changes --- index.html | 158 ++++++++++++++++++++++++++ modules/docereeAdManagerBidAdapter.js | 2 +- 2 files changed, 159 insertions(+), 1 deletion(-) create mode 100644 index.html diff --git a/index.html b/index.html new file mode 100644 index 00000000000..a9eb806dfe0 --- /dev/null +++ b/index.html @@ -0,0 +1,158 @@ + + + + + + Custom Prebid.js Adapter Example + + + +
+ + + + + + + + + + +
+ +
+ + diff --git a/modules/docereeAdManagerBidAdapter.js b/modules/docereeAdManagerBidAdapter.js index 38921981b12..d3765f5a130 100644 --- a/modules/docereeAdManagerBidAdapter.js +++ b/modules/docereeAdManagerBidAdapter.js @@ -71,7 +71,7 @@ export const spec = { }; function getPayload(bid, userData) { - if (!userData || !bid || bid.length === 0) { + if (!userData || !bid) { return false; } From 1ba4aeac5aac363d613615d0d9e2e0e6b154e164 Mon Sep 17 00:00:00 2001 From: Doceree-techStack Date: Wed, 15 Nov 2023 15:04:53 +0530 Subject: [PATCH 21/21] removed unwanted code --- index.html | 158 ----------------------------------------------------- 1 file changed, 158 deletions(-) delete mode 100644 index.html diff --git a/index.html b/index.html deleted file mode 100644 index a9eb806dfe0..00000000000 --- a/index.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - Custom Prebid.js Adapter Example - - - -
- - - - - - - - - - -
- -
- -