From c57685bf7c18e1adcb9c390e1c577147af619876 Mon Sep 17 00:00:00 2001 From: Edge Query <52324444+edgequery@users.noreply.github.com> Date: Wed, 13 May 2020 05:07:54 +0200 Subject: [PATCH 01/18] Add files via upload --- modules/edgequeryxBidAdapter.js | 125 ++++++++++++++++++++++++++++++++ modules/edgequeryxBidAdapter.mb | 39 ++++++++++ 2 files changed, 164 insertions(+) create mode 100644 modules/edgequeryxBidAdapter.js create mode 100644 modules/edgequeryxBidAdapter.mb diff --git a/modules/edgequeryxBidAdapter.js b/modules/edgequeryxBidAdapter.js new file mode 100644 index 00000000000..f7dda1190f8 --- /dev/null +++ b/modules/edgequeryxBidAdapter.js @@ -0,0 +1,125 @@ +import { Renderer } from '../src/Renderer.js'; +import * as utils from '../src/utils.js'; +import { config } from '../src/config.js'; +import { registerBidder, getIabSubCategory } from '../src/adapters/bidderFactory.js'; +import { BANNER, NATIVE, VIDEO, ADPOD } from '../src/mediaTypes.js'; + + + +const BIDDER_CODE = 'edgequeryx'; +export const spec = { + code: BIDDER_CODE, + aliases: ['eqx'], // short code + supportedMediaTypes: [BANNER, VIDEO], + /** + * Determines whether or not the given bid request is valid. + * + * @param {BidRequest} bid The bid params to validate. + * @return boolean True if this is a valid bid, and false otherwise. + */ + isBidRequestValid: function (bid) { + return !!(bid.params && bid.params.accountId && bid.params.widgetId); + }, + + + /** + * Make a server request from the list of BidRequests. + * + * @param {BidRequest[]} validBidRequests an array of bids + * @param {BidderRequest} bidderRequest bidder request object + * @return {ServerRequest[]} Info describing the request to the server. + */ + buildRequests: function (validBidRequests, bidderRequest) { + // use bidderRequest.bids[] to get bidder-dependent request info + // if your bidder supports multiple currencies, use config.getConfig(currency) + // to find which one the ad server needs + + // pull requested transaction ID from bidderRequest.bids[].transactionId + return validBidRequests.map(bid => { + // Common bid request attributes for banner, outstream and instream. + let payload = { + accountId: bid.params.accountId, + widgetId: bid.params.widgetId, + currencyCode: "EUR", + appName: bid.params.appName && bid.params.appName !== '' ? bid.params.appName : undefined, + tagId: bid.adUnitCode, + pageDomain: bidderRequest && bidderRequest.refererInfo && bidderRequest.refererInfo.referer ? bidderRequest.refererInfo.referer : undefined, + transactionId: bid.transactionId, + timeout: config.getConfig('bidderTimeout'), + bidId: bid.bidId, + prebidVersion: '$prebid.version$' + }; + + const bannerMediaType = utils.deepAccess(bid, 'mediaTypes.banner'); + payload.sizes = bannerMediaType.sizes.map(size => ({ + w: size[0], + h: size[1] + })); + + if (bidderRequest && bidderRequest.gdprConsent) { + payload.gdpr_consent = bidderRequest.gdprConsent.consentString; + payload.gdpr = bidderRequest.gdprConsent.gdprApplies; + } + + if (bidderRequest && bidderRequest.uspConsent) { + payload.us_privacy = bidderRequest.uspConsent; + } + + var payloadString = JSON.stringify(payload); + + return { + method: 'POST', + url: (bid.params.domain !== undefined ? bid.params.domain : 'https://deep.edgequery.io') + '/prebid/x', + data: payloadString, + }; + }); + }, + + /** + * Unpack the response from the server into a list of bids. + * + * @param {*} serverResponse A successful response from the server. + * @param {*} bidRequestString + * @return {Bid[]} An array of bids which were nested inside the server. + */ + interpretResponse: function (serverResponse, bidRequestString) { + const bidResponses = []; + let response = serverResponse.body; + try { + if (response) { + const bidRequest = JSON.parse(bidRequestString.data); + + let bidResponse = { + requestId: response.requestId, + cpm: response.cpm, + currency: response.currency, + width: response.width, + height: response.height, + ad: response.ad, + ttl: response.ttl, + creativeId: response.creativeId, + netRevenue: response.netRevenue + }; + + bidResponses.push(bidResponse); + } + } catch (error) { + utils.logError('Error while parsing Edge Query X response', error); + } + return bidResponses; + }, + + + getUserSyncs: function (syncOptions, serverResponses) { + const syncs = []; + if (syncOptions.iframeEnabled && serverResponses.length > 0) { + syncs.push({ + type: 'iframe', + url: serverResponses[0].body.cSyncUrl + }); + } + return syncs; + } +}; + +registerBidder(spec); diff --git a/modules/edgequeryxBidAdapter.mb b/modules/edgequeryxBidAdapter.mb new file mode 100644 index 00000000000..7cadce72e27 --- /dev/null +++ b/modules/edgequeryxBidAdapter.mb @@ -0,0 +1,39 @@ +# Overview + +``` +Module Name: Edge, Query X Bidder Adapter +Module Type: Bidder Adapter +Maintainer: contact@edgequery.com +``` + +# Description + +Connect to Edge Query X for bids. + +The Edge Query X adapter requires setup and approval from the Edge Query team. +Please reach out to your Technical account manager for more information. + +# Test Parameters + +## Web +``` + var adUnits = [ + { + code: 'test-div', + mediaTypes: { + banner: { + sizes: [[1, 1]] + } + }, + bids: [ + { + bidder: "edgequeryx", + params: { + accountId: "test", + widgetId: "test" + } + } + ] + } + ]; +``` \ No newline at end of file From 5041c7862ddc05029651383f9facea53d5791d31 Mon Sep 17 00:00:00 2001 From: Olivier Date: Wed, 13 May 2020 06:23:43 +0200 Subject: [PATCH 02/18] Bug fixed --- modules/edgequeryxBidAdapter.js | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/modules/edgequeryxBidAdapter.js b/modules/edgequeryxBidAdapter.js index f7dda1190f8..89bcf282760 100644 --- a/modules/edgequeryxBidAdapter.js +++ b/modules/edgequeryxBidAdapter.js @@ -1,8 +1,7 @@ -import { Renderer } from '../src/Renderer.js'; import * as utils from '../src/utils.js'; import { config } from '../src/config.js'; -import { registerBidder, getIabSubCategory } from '../src/adapters/bidderFactory.js'; -import { BANNER, NATIVE, VIDEO, ADPOD } from '../src/mediaTypes.js'; +import { registerBidder } from '../src/adapters/bidderFactory.js'; +import { BANNER, VIDEO } from '../src/mediaTypes.js'; @@ -87,8 +86,6 @@ export const spec = { let response = serverResponse.body; try { if (response) { - const bidRequest = JSON.parse(bidRequestString.data); - let bidResponse = { requestId: response.requestId, cpm: response.cpm, From 37f7257c019b2715864a731ddf4f545bc4b68e5d Mon Sep 17 00:00:00 2001 From: Olivier Date: Wed, 13 May 2020 06:25:30 +0200 Subject: [PATCH 03/18] Remove some new lines --- modules/edgequeryxBidAdapter.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/modules/edgequeryxBidAdapter.js b/modules/edgequeryxBidAdapter.js index 89bcf282760..5c72b08ef96 100644 --- a/modules/edgequeryxBidAdapter.js +++ b/modules/edgequeryxBidAdapter.js @@ -3,9 +3,8 @@ import { config } from '../src/config.js'; import { registerBidder } from '../src/adapters/bidderFactory.js'; import { BANNER, VIDEO } from '../src/mediaTypes.js'; - - const BIDDER_CODE = 'edgequeryx'; + export const spec = { code: BIDDER_CODE, aliases: ['eqx'], // short code @@ -20,7 +19,6 @@ export const spec = { return !!(bid.params && bid.params.accountId && bid.params.widgetId); }, - /** * Make a server request from the list of BidRequests. * From e3139a9fb2e7c8dac0d653beb7b48dbe0d98db8a Mon Sep 17 00:00:00 2001 From: Olivier Date: Wed, 13 May 2020 06:54:31 +0200 Subject: [PATCH 04/18] Correction Circle --- modules/edgequeryxBidAdapter.js | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/modules/edgequeryxBidAdapter.js b/modules/edgequeryxBidAdapter.js index 5c72b08ef96..c6706f0b257 100644 --- a/modules/edgequeryxBidAdapter.js +++ b/modules/edgequeryxBidAdapter.js @@ -1,7 +1,7 @@ import * as utils from '../src/utils.js'; import { config } from '../src/config.js'; import { registerBidder } from '../src/adapters/bidderFactory.js'; -import { BANNER, VIDEO } from '../src/mediaTypes.js'; +import { BANNER, VIDEO } from '../src/mediaTypes.js'; const BIDDER_CODE = 'edgequeryx'; @@ -37,7 +37,7 @@ export const spec = { let payload = { accountId: bid.params.accountId, widgetId: bid.params.widgetId, - currencyCode: "EUR", + currencyCode: 'EUR', appName: bid.params.appName && bid.params.appName !== '' ? bid.params.appName : undefined, tagId: bid.adUnitCode, pageDomain: bidderRequest && bidderRequest.refererInfo && bidderRequest.refererInfo.referer ? bidderRequest.refererInfo.referer : undefined, @@ -47,20 +47,20 @@ export const spec = { prebidVersion: '$prebid.version$' }; - const bannerMediaType = utils.deepAccess(bid, 'mediaTypes.banner'); - payload.sizes = bannerMediaType.sizes.map(size => ({ + const bannerMediaType = utils.deepAccess(bid, 'mediaTypes.banner'); + payload.sizes = bannerMediaType.sizes.map(size => ({ w: size[0], h: size[1] - })); + })); - if (bidderRequest && bidderRequest.gdprConsent) { + if (bidderRequest && bidderRequest.gdprConsent) { payload.gdpr_consent = bidderRequest.gdprConsent.consentString; payload.gdpr = bidderRequest.gdprConsent.gdprApplies; } if (bidderRequest && bidderRequest.uspConsent) { payload.us_privacy = bidderRequest.uspConsent; - } + } var payloadString = JSON.stringify(payload); @@ -104,7 +104,6 @@ export const spec = { return bidResponses; }, - getUserSyncs: function (syncOptions, serverResponses) { const syncs = []; if (syncOptions.iframeEnabled && serverResponses.length > 0) { From c497f15a50b3efea4d67c98397d81e82ea1677c7 Mon Sep 17 00:00:00 2001 From: Olivier Date: Sat, 16 May 2020 19:09:16 +0200 Subject: [PATCH 05/18] Test Unit --- .../spec/modules/edgequeryxBidAdapter_spec.js | 117 ++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 test/spec/modules/edgequeryxBidAdapter_spec.js diff --git a/test/spec/modules/edgequeryxBidAdapter_spec.js b/test/spec/modules/edgequeryxBidAdapter_spec.js new file mode 100644 index 00000000000..ae62e619846 --- /dev/null +++ b/test/spec/modules/edgequeryxBidAdapter_spec.js @@ -0,0 +1,117 @@ +import { + expect + } from 'chai'; + import { + spec + } from 'modules/edgequeryxBidAdapter.js'; + import { + newBidder + } from 'src/adapters/bidderFactory.js'; + import { + config + } from 'src/config.js'; + import * as utils from 'src/utils.js'; + import { requestBidsHook } from 'modules/consentManagement.js'; + + // Default params with optional ones + describe('Edge Query X bid adapter tests', function () { + var DEFAULT_PARAMS = [{ + bidId: 'abcd1234', + mediaTypes: { + banner: { + sizes: [ + [1, 1] + ] + } + }, + bidder: 'edgequeryx', + params: { + accountId: "test", + widgetId: "test" + }, + requestId: 'efgh5678', + transactionId: 'zsfgzzg' + }]; + + var BID_RESPONSE = { + body: { + cpm: 22, + width: 1, + height: 1, + creativeId: 'EQXTest', + currency: 'EUR', + netRevenue: true, + ttl: 360, + ad: '< --- awesome script --- >' + } + }; + + it('Verify build request', function () { + config.setConfig({ + 'currency': { + 'adServerCurrency': 'EUR' + } + }); + const request = spec.buildRequests(DEFAULT_PARAMS); + expect(request[0]).to.have.property('url').and.to.equal('https://deep.edgequery.io/prebix/x'); + expect(request[0]).to.have.property('method').and.to.equal('POST'); + const requestContent = JSON.parse(request[0].data); + + expect(requestContent).to.have.property('accountId').and.to.equal('test'); + expect(requestContent).to.have.property('widgetId').and.to.equal('test'); + expect(requestContent).to.have.property('sizes'); + expect(requestContent.sizes[0]).to.have.property('w').and.to.equal(1); + expect(requestContent.sizes[0]).to.have.property('h').and.to.equal(1); + }); + + it('Verify parse response', function () { + const request = spec.buildRequests(DEFAULT_PARAMS); + const bids = spec.interpretResponse(BID_RESPONSE, request[0]); + expect(bids).to.have.lengthOf(1); + const bid = bids[0]; + expect(bid.cpm).to.equal(22); + expect(bid.ad).to.equal('< --- awesome script --- >'); + expect(bid.width).to.equal(1); + expect(bid.height).to.equal(1); + expect(bid.creativeId).to.equal('EQXTest'); + expect(bid.currency).to.equal('EUR'); + expect(bid.netRevenue).to.equal(true); + expect(bid.ttl).to.equal(300); + expect(bid.requestId).to.equal(DEFAULT_PARAMS[0].bidId); + + expect(function () { + spec.interpretResponse(BID_RESPONSE, { + data: 'invalid Json' + }) + }).to.not.throw(); + }); + + it('Verifies bidder code', function () { + expect(spec.code).to.equal('edgequeryx'); + }); + + it('Verifies bidder aliases', function () { + expect(spec.aliases).to.have.lengthOf(1); + expect(spec.aliases[0]).to.equal('eqx'); + }); + + it('Verifies if bid request valid', function () { + expect(spec.isBidRequestValid(DEFAULT_PARAMS[0])).to.equal(true); + expect(spec.isBidRequestValid({})).to.equal(false); + expect(spec.isBidRequestValid({ + params: {} + })).to.equal(false); + expect(spec.isBidRequestValid({ + params: { + widgetyId: 'abcdef' + } + })).to.equal(false); + expect(spec.isBidRequestValid({ + params: { + widgetId: 'test', + accountId: 'test' + } + })).to.equal(true); + }); + }); + \ No newline at end of file From 4fc2a5f8eab4d7febf92df423537c297c122d891 Mon Sep 17 00:00:00 2001 From: Olivier Date: Sat, 16 May 2020 19:29:45 +0200 Subject: [PATCH 06/18] Indent --- .../spec/modules/edgequeryxBidAdapter_spec.js | 192 +++++++++--------- 1 file changed, 95 insertions(+), 97 deletions(-) diff --git a/test/spec/modules/edgequeryxBidAdapter_spec.js b/test/spec/modules/edgequeryxBidAdapter_spec.js index ae62e619846..21eeb92bd99 100644 --- a/test/spec/modules/edgequeryxBidAdapter_spec.js +++ b/test/spec/modules/edgequeryxBidAdapter_spec.js @@ -1,117 +1,115 @@ import { expect - } from 'chai'; - import { +} from 'chai'; +import { spec - } from 'modules/edgequeryxBidAdapter.js'; - import { +} from 'modules/edgequeryxBidAdapter.js'; +import { newBidder - } from 'src/adapters/bidderFactory.js'; - import { +} from 'src/adapters/bidderFactory.js'; +import { config - } from 'src/config.js'; - import * as utils from 'src/utils.js'; - import { requestBidsHook } from 'modules/consentManagement.js'; - - // Default params with optional ones - describe('Edge Query X bid adapter tests', function () { +} from 'src/config.js'; +import * as utils from 'src/utils.js'; +import { requestBidsHook } from 'modules/consentManagement.js'; + +// Default params with optional ones +describe('Edge Query X bid adapter tests', function () { var DEFAULT_PARAMS = [{ - bidId: 'abcd1234', - mediaTypes: { - banner: { - sizes: [ - [1, 1] - ] - } - }, - bidder: 'edgequeryx', - params: { - accountId: "test", - widgetId: "test" - }, - requestId: 'efgh5678', - transactionId: 'zsfgzzg' + bidId: 'abcd1234', + mediaTypes: { + banner: { + sizes: [ + [1, 1] + ] + } + }, + bidder: 'edgequeryx', + params: { + accountId: "test", + widgetId: "test" + }, + requestId: 'efgh5678', + transactionId: 'zsfgzzg' }]; - var BID_RESPONSE = { - body: { - cpm: 22, - width: 1, - height: 1, - creativeId: 'EQXTest', - currency: 'EUR', - netRevenue: true, - ttl: 360, - ad: '< --- awesome script --- >' - } + body: { + cpm: 22, + width: 1, + height: 1, + creativeId: 'EQXTest', + currency: 'EUR', + netRevenue: true, + ttl: 360, + ad: '< --- awesome script --- >' + } }; - + it('Verify build request', function () { - config.setConfig({ - 'currency': { - 'adServerCurrency': 'EUR' - } - }); - const request = spec.buildRequests(DEFAULT_PARAMS); - expect(request[0]).to.have.property('url').and.to.equal('https://deep.edgequery.io/prebix/x'); - expect(request[0]).to.have.property('method').and.to.equal('POST'); - const requestContent = JSON.parse(request[0].data); + config.setConfig({ + 'currency': { + 'adServerCurrency': 'EUR' + } + }); + const request = spec.buildRequests(DEFAULT_PARAMS); + expect(request[0]).to.have.property('url').and.to.equal('https://deep.edgequery.io/prebix/x'); + expect(request[0]).to.have.property('method').and.to.equal('POST'); + const requestContent = JSON.parse(request[0].data); - expect(requestContent).to.have.property('accountId').and.to.equal('test'); - expect(requestContent).to.have.property('widgetId').and.to.equal('test'); - expect(requestContent).to.have.property('sizes'); - expect(requestContent.sizes[0]).to.have.property('w').and.to.equal(1); - expect(requestContent.sizes[0]).to.have.property('h').and.to.equal(1); + expect(requestContent).to.have.property('accountId').and.to.equal('test'); + expect(requestContent).to.have.property('widgetId').and.to.equal('test'); + expect(requestContent).to.have.property('sizes'); + expect(requestContent.sizes[0]).to.have.property('w').and.to.equal(1); + expect(requestContent.sizes[0]).to.have.property('h').and.to.equal(1); }); - + it('Verify parse response', function () { - const request = spec.buildRequests(DEFAULT_PARAMS); - const bids = spec.interpretResponse(BID_RESPONSE, request[0]); - expect(bids).to.have.lengthOf(1); - const bid = bids[0]; - expect(bid.cpm).to.equal(22); - expect(bid.ad).to.equal('< --- awesome script --- >'); - expect(bid.width).to.equal(1); - expect(bid.height).to.equal(1); - expect(bid.creativeId).to.equal('EQXTest'); - expect(bid.currency).to.equal('EUR'); - expect(bid.netRevenue).to.equal(true); - expect(bid.ttl).to.equal(300); - expect(bid.requestId).to.equal(DEFAULT_PARAMS[0].bidId); - - expect(function () { - spec.interpretResponse(BID_RESPONSE, { - data: 'invalid Json' - }) - }).to.not.throw(); + const request = spec.buildRequests(DEFAULT_PARAMS); + const bids = spec.interpretResponse(BID_RESPONSE, request[0]); + expect(bids).to.have.lengthOf(1); + const bid = bids[0]; + expect(bid.cpm).to.equal(22); + expect(bid.ad).to.equal('< --- awesome script --- >'); + expect(bid.width).to.equal(1); + expect(bid.height).to.equal(1); + expect(bid.creativeId).to.equal('EQXTest'); + expect(bid.currency).to.equal('EUR'); + expect(bid.netRevenue).to.equal(true); + expect(bid.ttl).to.equal(300); + expect(bid.requestId).to.equal(DEFAULT_PARAMS[0].bidId); + + expect(function () { + spec.interpretResponse(BID_RESPONSE, { + data: 'invalid Json' + }) + }).to.not.throw(); }); - + it('Verifies bidder code', function () { - expect(spec.code).to.equal('edgequeryx'); + expect(spec.code).to.equal('edgequeryx'); }); - + it('Verifies bidder aliases', function () { - expect(spec.aliases).to.have.lengthOf(1); - expect(spec.aliases[0]).to.equal('eqx'); + expect(spec.aliases).to.have.lengthOf(1); + expect(spec.aliases[0]).to.equal('eqx'); }); - + it('Verifies if bid request valid', function () { - expect(spec.isBidRequestValid(DEFAULT_PARAMS[0])).to.equal(true); - expect(spec.isBidRequestValid({})).to.equal(false); - expect(spec.isBidRequestValid({ - params: {} - })).to.equal(false); - expect(spec.isBidRequestValid({ - params: { - widgetyId: 'abcdef' - } - })).to.equal(false); - expect(spec.isBidRequestValid({ - params: { - widgetId: 'test', - accountId: 'test' - } - })).to.equal(true); + expect(spec.isBidRequestValid(DEFAULT_PARAMS[0])).to.equal(true); + expect(spec.isBidRequestValid({})).to.equal(false); + expect(spec.isBidRequestValid({ + params: {} + })).to.equal(false); + expect(spec.isBidRequestValid({ + params: { + widgetyId: 'abcdef' + } + })).to.equal(false); + expect(spec.isBidRequestValid({ + params: { + widgetId: 'test', + accountId: 'test' + } + })).to.equal(true); }); - }); - \ No newline at end of file +}); From 64c29243d107cdef2913e81182b16fa20bf5e834 Mon Sep 17 00:00:00 2001 From: Olivier Date: Sat, 16 May 2020 19:34:17 +0200 Subject: [PATCH 07/18] Indent 2 space --- .../spec/modules/edgequeryxBidAdapter_spec.js | 188 +++++++++--------- 1 file changed, 94 insertions(+), 94 deletions(-) diff --git a/test/spec/modules/edgequeryxBidAdapter_spec.js b/test/spec/modules/edgequeryxBidAdapter_spec.js index 21eeb92bd99..2299581788e 100644 --- a/test/spec/modules/edgequeryxBidAdapter_spec.js +++ b/test/spec/modules/edgequeryxBidAdapter_spec.js @@ -1,115 +1,115 @@ import { - expect + expect } from 'chai'; import { - spec + spec } from 'modules/edgequeryxBidAdapter.js'; import { - newBidder + newBidder } from 'src/adapters/bidderFactory.js'; import { - config + config } from 'src/config.js'; import * as utils from 'src/utils.js'; import { requestBidsHook } from 'modules/consentManagement.js'; // Default params with optional ones describe('Edge Query X bid adapter tests', function () { - var DEFAULT_PARAMS = [{ - bidId: 'abcd1234', - mediaTypes: { - banner: { - sizes: [ - [1, 1] - ] - } - }, - bidder: 'edgequeryx', - params: { - accountId: "test", - widgetId: "test" - }, - requestId: 'efgh5678', - transactionId: 'zsfgzzg' - }]; - var BID_RESPONSE = { - body: { - cpm: 22, - width: 1, - height: 1, - creativeId: 'EQXTest', - currency: 'EUR', - netRevenue: true, - ttl: 360, - ad: '< --- awesome script --- >' - } - }; + var DEFAULT_PARAMS = [{ + bidId: 'abcd1234', + mediaTypes: { + banner: { + sizes: [ + [1, 1] + ] + } + }, + bidder: 'edgequeryx', + params: { + accountId: "test", + widgetId: "test" + }, + requestId: 'efgh5678', + transactionId: 'zsfgzzg' + }]; + var BID_RESPONSE = { + body: { + cpm: 22, + width: 1, + height: 1, + creativeId: 'EQXTest', + currency: 'EUR', + netRevenue: true, + ttl: 360, + ad: '< --- awesome script --- >' + } + }; - it('Verify build request', function () { - config.setConfig({ - 'currency': { - 'adServerCurrency': 'EUR' - } - }); - const request = spec.buildRequests(DEFAULT_PARAMS); - expect(request[0]).to.have.property('url').and.to.equal('https://deep.edgequery.io/prebix/x'); - expect(request[0]).to.have.property('method').and.to.equal('POST'); - const requestContent = JSON.parse(request[0].data); - - expect(requestContent).to.have.property('accountId').and.to.equal('test'); - expect(requestContent).to.have.property('widgetId').and.to.equal('test'); - expect(requestContent).to.have.property('sizes'); - expect(requestContent.sizes[0]).to.have.property('w').and.to.equal(1); - expect(requestContent.sizes[0]).to.have.property('h').and.to.equal(1); + it('Verify build request', function () { + config.setConfig({ + 'currency': { + 'adServerCurrency': 'EUR' + } }); + const request = spec.buildRequests(DEFAULT_PARAMS); + expect(request[0]).to.have.property('url').and.to.equal('https://deep.edgequery.io/prebix/x'); + expect(request[0]).to.have.property('method').and.to.equal('POST'); + const requestContent = JSON.parse(request[0].data); - it('Verify parse response', function () { - const request = spec.buildRequests(DEFAULT_PARAMS); - const bids = spec.interpretResponse(BID_RESPONSE, request[0]); - expect(bids).to.have.lengthOf(1); - const bid = bids[0]; - expect(bid.cpm).to.equal(22); - expect(bid.ad).to.equal('< --- awesome script --- >'); - expect(bid.width).to.equal(1); - expect(bid.height).to.equal(1); - expect(bid.creativeId).to.equal('EQXTest'); - expect(bid.currency).to.equal('EUR'); - expect(bid.netRevenue).to.equal(true); - expect(bid.ttl).to.equal(300); - expect(bid.requestId).to.equal(DEFAULT_PARAMS[0].bidId); + expect(requestContent).to.have.property('accountId').and.to.equal('test'); + expect(requestContent).to.have.property('widgetId').and.to.equal('test'); + expect(requestContent).to.have.property('sizes'); + expect(requestContent.sizes[0]).to.have.property('w').and.to.equal(1); + expect(requestContent.sizes[0]).to.have.property('h').and.to.equal(1); + }); - expect(function () { - spec.interpretResponse(BID_RESPONSE, { - data: 'invalid Json' - }) - }).to.not.throw(); - }); + it('Verify parse response', function () { + const request = spec.buildRequests(DEFAULT_PARAMS); + const bids = spec.interpretResponse(BID_RESPONSE, request[0]); + expect(bids).to.have.lengthOf(1); + const bid = bids[0]; + expect(bid.cpm).to.equal(22); + expect(bid.ad).to.equal('< --- awesome script --- >'); + expect(bid.width).to.equal(1); + expect(bid.height).to.equal(1); + expect(bid.creativeId).to.equal('EQXTest'); + expect(bid.currency).to.equal('EUR'); + expect(bid.netRevenue).to.equal(true); + expect(bid.ttl).to.equal(300); + expect(bid.requestId).to.equal(DEFAULT_PARAMS[0].bidId); - it('Verifies bidder code', function () { - expect(spec.code).to.equal('edgequeryx'); - }); + expect(function () { + spec.interpretResponse(BID_RESPONSE, { + data: 'invalid Json' + }) + }).to.not.throw(); + }); - it('Verifies bidder aliases', function () { - expect(spec.aliases).to.have.lengthOf(1); - expect(spec.aliases[0]).to.equal('eqx'); - }); + it('Verifies bidder code', function () { + expect(spec.code).to.equal('edgequeryx'); + }); - it('Verifies if bid request valid', function () { - expect(spec.isBidRequestValid(DEFAULT_PARAMS[0])).to.equal(true); - expect(spec.isBidRequestValid({})).to.equal(false); - expect(spec.isBidRequestValid({ - params: {} - })).to.equal(false); - expect(spec.isBidRequestValid({ - params: { - widgetyId: 'abcdef' - } - })).to.equal(false); - expect(spec.isBidRequestValid({ - params: { - widgetId: 'test', - accountId: 'test' - } - })).to.equal(true); - }); + it('Verifies bidder aliases', function () { + expect(spec.aliases).to.have.lengthOf(1); + expect(spec.aliases[0]).to.equal('eqx'); + }); + + it('Verifies if bid request valid', function () { + expect(spec.isBidRequestValid(DEFAULT_PARAMS[0])).to.equal(true); + expect(spec.isBidRequestValid({})).to.equal(false); + expect(spec.isBidRequestValid({ + params: {} + })).to.equal(false); + expect(spec.isBidRequestValid({ + params: { + widgetyId: 'abcdef' + } + })).to.equal(false); + expect(spec.isBidRequestValid({ + params: { + widgetId: 'test', + accountId: 'test' + } + })).to.equal(true); + }); }); From a99148bd78c03e7c10fa8a92560ed4057d6cb7c0 Mon Sep 17 00:00:00 2001 From: Olivier Date: Sat, 16 May 2020 20:04:46 +0200 Subject: [PATCH 08/18] Single quote --- test/spec/modules/edgequeryxBidAdapter_spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/spec/modules/edgequeryxBidAdapter_spec.js b/test/spec/modules/edgequeryxBidAdapter_spec.js index 2299581788e..5e3cff285e3 100644 --- a/test/spec/modules/edgequeryxBidAdapter_spec.js +++ b/test/spec/modules/edgequeryxBidAdapter_spec.js @@ -26,8 +26,8 @@ describe('Edge Query X bid adapter tests', function () { }, bidder: 'edgequeryx', params: { - accountId: "test", - widgetId: "test" + accountId: 'test', + widgetId: 'test' }, requestId: 'efgh5678', transactionId: 'zsfgzzg' From 58d238831305ff98a83b13be5233d813b89fa640 Mon Sep 17 00:00:00 2001 From: Olivier Date: Sat, 16 May 2020 20:12:29 +0200 Subject: [PATCH 09/18] test unit --- test/spec/modules/edgequeryxBidAdapter_spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/spec/modules/edgequeryxBidAdapter_spec.js b/test/spec/modules/edgequeryxBidAdapter_spec.js index 5e3cff285e3..5f2a42ed3cc 100644 --- a/test/spec/modules/edgequeryxBidAdapter_spec.js +++ b/test/spec/modules/edgequeryxBidAdapter_spec.js @@ -52,7 +52,7 @@ describe('Edge Query X bid adapter tests', function () { } }); const request = spec.buildRequests(DEFAULT_PARAMS); - expect(request[0]).to.have.property('url').and.to.equal('https://deep.edgequery.io/prebix/x'); + expect(request[0]).to.have.property('url').and.to.equal('https://deep.edgequery.io/prebid/x'); expect(request[0]).to.have.property('method').and.to.equal('POST'); const requestContent = JSON.parse(request[0].data); @@ -75,7 +75,7 @@ describe('Edge Query X bid adapter tests', function () { expect(bid.creativeId).to.equal('EQXTest'); expect(bid.currency).to.equal('EUR'); expect(bid.netRevenue).to.equal(true); - expect(bid.ttl).to.equal(300); + expect(bid.ttl).to.equal(360); expect(bid.requestId).to.equal(DEFAULT_PARAMS[0].bidId); expect(function () { From 012791c8114ead5e29502e67ca2428d65033ee3b Mon Sep 17 00:00:00 2001 From: Olivier Date: Sat, 16 May 2020 20:38:55 +0200 Subject: [PATCH 10/18] requestID --- test/spec/modules/edgequeryxBidAdapter_spec.js | 1 + 1 file changed, 1 insertion(+) diff --git a/test/spec/modules/edgequeryxBidAdapter_spec.js b/test/spec/modules/edgequeryxBidAdapter_spec.js index 5f2a42ed3cc..a66c546bd7c 100644 --- a/test/spec/modules/edgequeryxBidAdapter_spec.js +++ b/test/spec/modules/edgequeryxBidAdapter_spec.js @@ -34,6 +34,7 @@ describe('Edge Query X bid adapter tests', function () { }]; var BID_RESPONSE = { body: { + requestId: 'abcd1234', cpm: 22, width: 1, height: 1, From 9652a2a53b05c5e66a7b63154872f9c65c748b19 Mon Sep 17 00:00:00 2001 From: Olivier Date: Tue, 19 May 2020 18:17:30 +0200 Subject: [PATCH 11/18] Rename mb to md --- modules/edgequeryxBidAdapter.mb | 39 --------------------------------- 1 file changed, 39 deletions(-) delete mode 100644 modules/edgequeryxBidAdapter.mb diff --git a/modules/edgequeryxBidAdapter.mb b/modules/edgequeryxBidAdapter.mb deleted file mode 100644 index 7cadce72e27..00000000000 --- a/modules/edgequeryxBidAdapter.mb +++ /dev/null @@ -1,39 +0,0 @@ -# Overview - -``` -Module Name: Edge, Query X Bidder Adapter -Module Type: Bidder Adapter -Maintainer: contact@edgequery.com -``` - -# Description - -Connect to Edge Query X for bids. - -The Edge Query X adapter requires setup and approval from the Edge Query team. -Please reach out to your Technical account manager for more information. - -# Test Parameters - -## Web -``` - var adUnits = [ - { - code: 'test-div', - mediaTypes: { - banner: { - sizes: [[1, 1]] - } - }, - bids: [ - { - bidder: "edgequeryx", - params: { - accountId: "test", - widgetId: "test" - } - } - ] - } - ]; -``` \ No newline at end of file From 42b7e3d4b2fccc1976cb3746528b16fc2efd25d8 Mon Sep 17 00:00:00 2001 From: Olivier Date: Tue, 19 May 2020 18:18:13 +0200 Subject: [PATCH 12/18] add md --- modules/edgequeryxBidAdapter.md | 39 +++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 modules/edgequeryxBidAdapter.md diff --git a/modules/edgequeryxBidAdapter.md b/modules/edgequeryxBidAdapter.md new file mode 100644 index 00000000000..7cadce72e27 --- /dev/null +++ b/modules/edgequeryxBidAdapter.md @@ -0,0 +1,39 @@ +# Overview + +``` +Module Name: Edge, Query X Bidder Adapter +Module Type: Bidder Adapter +Maintainer: contact@edgequery.com +``` + +# Description + +Connect to Edge Query X for bids. + +The Edge Query X adapter requires setup and approval from the Edge Query team. +Please reach out to your Technical account manager for more information. + +# Test Parameters + +## Web +``` + var adUnits = [ + { + code: 'test-div', + mediaTypes: { + banner: { + sizes: [[1, 1]] + } + }, + bids: [ + { + bidder: "edgequeryx", + params: { + accountId: "test", + widgetId: "test" + } + } + ] + } + ]; +``` \ No newline at end of file From b9641890a0ab6a36768f1a85c71bd3ffa46e5162 Mon Sep 17 00:00:00 2001 From: Olivier Date: Tue, 19 May 2020 22:19:45 +0200 Subject: [PATCH 13/18] Correcting md file --- modules/edgequeryxBidAdapter.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/edgequeryxBidAdapter.md b/modules/edgequeryxBidAdapter.md index 7cadce72e27..265120dfaba 100644 --- a/modules/edgequeryxBidAdapter.md +++ b/modules/edgequeryxBidAdapter.md @@ -1,7 +1,7 @@ # Overview ``` -Module Name: Edge, Query X Bidder Adapter +Module Name: Edge Query X Bidder Adapter Module Type: Bidder Adapter Maintainer: contact@edgequery.com ``` From e0981f18675ce9867286b1886bacfcf231f6fd9c Mon Sep 17 00:00:00 2001 From: Olivier Date: Tue, 19 May 2020 23:08:54 +0200 Subject: [PATCH 14/18] Improving gulp test to get more than 80% --- modules/edgequeryxBidAdapter.js | 23 ++--------------------- package-lock.json | 2 +- 2 files changed, 3 insertions(+), 22 deletions(-) diff --git a/modules/edgequeryxBidAdapter.js b/modules/edgequeryxBidAdapter.js index c6706f0b257..6349baf4620 100644 --- a/modules/edgequeryxBidAdapter.js +++ b/modules/edgequeryxBidAdapter.js @@ -38,9 +38,7 @@ export const spec = { accountId: bid.params.accountId, widgetId: bid.params.widgetId, currencyCode: 'EUR', - appName: bid.params.appName && bid.params.appName !== '' ? bid.params.appName : undefined, tagId: bid.adUnitCode, - pageDomain: bidderRequest && bidderRequest.refererInfo && bidderRequest.refererInfo.referer ? bidderRequest.refererInfo.referer : undefined, transactionId: bid.transactionId, timeout: config.getConfig('bidderTimeout'), bidId: bid.bidId, @@ -53,14 +51,6 @@ export const spec = { h: size[1] })); - if (bidderRequest && bidderRequest.gdprConsent) { - payload.gdpr_consent = bidderRequest.gdprConsent.consentString; - payload.gdpr = bidderRequest.gdprConsent.gdprApplies; - } - - if (bidderRequest && bidderRequest.uspConsent) { - payload.us_privacy = bidderRequest.uspConsent; - } var payloadString = JSON.stringify(payload); @@ -102,18 +92,9 @@ export const spec = { utils.logError('Error while parsing Edge Query X response', error); } return bidResponses; - }, - - getUserSyncs: function (syncOptions, serverResponses) { - const syncs = []; - if (syncOptions.iframeEnabled && serverResponses.length > 0) { - syncs.push({ - type: 'iframe', - url: serverResponses[0].body.cSyncUrl - }); - } - return syncs; } + + }; registerBidder(spec); diff --git a/package-lock.json b/package-lock.json index 146fb49c435..511989bb275 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "prebid.js", - "version": "3.18.0-pre", + "version": "3.20.0-pre", "lockfileVersion": 1, "requires": true, "dependencies": { From 3ff36fba13d8fc42ce24e16f4eb8d047c5ff3a05 Mon Sep 17 00:00:00 2001 From: Olivier Date: Tue, 19 May 2020 23:14:26 +0200 Subject: [PATCH 15/18] Correcting double lines --- modules/edgequeryxBidAdapter.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/edgequeryxBidAdapter.js b/modules/edgequeryxBidAdapter.js index 6349baf4620..ee50946ee18 100644 --- a/modules/edgequeryxBidAdapter.js +++ b/modules/edgequeryxBidAdapter.js @@ -51,7 +51,6 @@ export const spec = { h: size[1] })); - var payloadString = JSON.stringify(payload); return { @@ -94,7 +93,6 @@ export const spec = { return bidResponses; } - }; registerBidder(spec); From 16f89fb9387433b07e2315ab74eb5883ab4b323c Mon Sep 17 00:00:00 2001 From: Edge Query <52324444+edgequery@users.noreply.github.com> Date: Wed, 20 May 2020 21:50:07 +0200 Subject: [PATCH 16/18] Update package-lock.json --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 511989bb275..146fb49c435 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "prebid.js", - "version": "3.20.0-pre", + "version": "3.18.0-pre", "lockfileVersion": 1, "requires": true, "dependencies": { From d312272e444d97878cffabaf2291d64e2ebee26c Mon Sep 17 00:00:00 2001 From: Olivier Date: Thu, 21 May 2020 12:40:11 +0200 Subject: [PATCH 17/18] Back to original lock version --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 146fb49c435..511989bb275 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "prebid.js", - "version": "3.18.0-pre", + "version": "3.20.0-pre", "lockfileVersion": 1, "requires": true, "dependencies": { From 82aa860ce4dfce73831dd62a6b2211db9a200423 Mon Sep 17 00:00:00 2001 From: Olivier Date: Thu, 21 May 2020 12:42:46 +0200 Subject: [PATCH 18/18] Back to original package-lock.json version --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 511989bb275..146fb49c435 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "prebid.js", - "version": "3.20.0-pre", + "version": "3.18.0-pre", "lockfileVersion": 1, "requires": true, "dependencies": {