diff --git a/modules/mobkoiBidAdapter.js b/modules/mobkoiBidAdapter.js index 09528d2f7df..ec5337447ed 100644 --- a/modules/mobkoiBidAdapter.js +++ b/modules/mobkoiBidAdapter.js @@ -1,7 +1,7 @@ import { ortbConverter } from '../libraries/ortbConverter/converter.js'; import { registerBidder } from '../src/adapters/bidderFactory.js'; import { BANNER } from '../src/mediaTypes.js'; -import { _each, replaceMacros, deepAccess, deepSetValue, logError } from '../src/utils.js'; +import { deepAccess, deepSetValue, logError } from '../src/utils.js'; const BIDDER_CODE = 'mobkoi'; const GVL_ID = 898; @@ -13,18 +13,9 @@ const PUBLISHER_PARAMS = { * The name of the parameter that the publisher can use to specify the ad server endpoint. */ PARAM_NAME_AD_SERVER_BASE_URL: 'adServerBaseUrl', - PARAM_NAME_PUBLISHER_ID: 'publisherId', PARAM_NAME_PLACEMENT_ID: 'placementId', } -/** - * The list of ORTB response fields that are used in the macros. Field - * replacement is self-implemented in the adapter. Use dot-notated path for - * nested fields. For example, 'ad.ext.adomain'. For more information, visit - * https://www.npmjs.com/package/dset and https://www.npmjs.com/package/dlv. - */ -const ORTB_RESPONSE_FIELDS_SUPPORT_MACROS = ['adm', 'nurl', 'lurl']; - export const converter = ortbConverter({ context: { netRevenue: true, @@ -35,7 +26,6 @@ export const converter = ortbConverter({ const prebidBidRequest = context.bidRequests[0]; ortbRequest.id = utils.getOrtbId(prebidBidRequest); - deepSetValue(ortbRequest, 'site.publisher.id', utils.getPublisherId(prebidBidRequest)); deepSetValue(ortbRequest, 'site.publisher.ext.adServerBaseUrl', utils.getAdServerEndpointBaseUrl(prebidBidRequest)); // We only support one impression per request. deepSetValue(ortbRequest, 'imp.0.tagid', utils.getPlacementId(prebidBidRequest)); @@ -44,8 +34,6 @@ export const converter = ortbConverter({ return ortbRequest; }, bidResponse(buildPrebidBidResponse, ortbBidResponse, context) { - utils.replaceAllMacrosInPlace(ortbBidResponse, context); - const prebidBid = buildPrebidBidResponse(ortbBidResponse, context); utils.addCustomFieldsToPrebidBidResponse(prebidBid, ortbBidResponse); return prebidBid; @@ -61,16 +49,6 @@ export const spec = { * Determines whether or not the given bid request is valid. */ isBidRequestValid(bid) { - if ( - !deepAccess(bid, `params.${PUBLISHER_PARAMS.PARAM_NAME_PUBLISHER_ID}`) && - !deepAccess(bid, 'ortb2.site.publisher.id') - ) { - logError(`The ${PUBLISHER_PARAMS.PARAM_NAME_PUBLISHER_ID} field is required in the bid request. ` + - 'Please follow the setup guideline to set the publisher ID field.' - ); - return false; - } - if ( !deepAccess(bid, `params.${PUBLISHER_PARAMS.PARAM_NAME_PLACEMENT_ID}`) ) { @@ -176,43 +154,6 @@ export const utils = { return placementId; }, - /** - * !IMPORTANT: Make sure the implementation of this function matches utils.getPublisherId in - * both adapters. - * Extract the publisher ID from the given object. - * @param {*} prebidBidRequestOrOrtbBidRequest - * @returns string - * @throws {Error} If the publisher ID is not found in the given object. - */ - getPublisherId: function (prebidBidRequestOrOrtbBidRequest) { - // Fields that would be automatically set if the publisher set it - // via pbjs.setBidderConfig. - const ortbPath = 'site.publisher.id'; - const prebidPath = `ortb2.${ortbPath}`; - - // Fields that would be set by the publisher in the bid - // configuration object in ad unit. - const paramPath = 'params.publisherId'; - const bidRequestFirstBidParam = `bids.0.${paramPath}`; - - const publisherId = - deepAccess(prebidBidRequestOrOrtbBidRequest, paramPath) || - deepAccess(prebidBidRequestOrOrtbBidRequest, bidRequestFirstBidParam) || - deepAccess(prebidBidRequestOrOrtbBidRequest, prebidPath) || - deepAccess(prebidBidRequestOrOrtbBidRequest, ortbPath); - - if (!publisherId) { - throw new Error( - 'Failed to obtain publisher ID from the given object. ' + - `Please set it via the "${prebidPath}" field with pbjs.setBidderConfig.\n` + - 'Given object:\n' + - JSON.stringify({functionParam: prebidBidRequestOrOrtbBidRequest}, null, 3) - ); - } - - return publisherId; - }, - /** * !IMPORTANT: Make sure the implementation of this function matches utils.getOrtbId in * mobkoiAnalyticsAdapter.js. @@ -254,29 +195,4 @@ export const utils = { prebidBidResponse.ortbBidResponse = ortbBidResponse; prebidBidResponse.ortbId = ortbBidResponse.id; }, - - replaceAllMacrosInPlace(ortbBidResponse, context) { - const macros = { - // ORTB macros - AUCTION_PRICE: ortbBidResponse.price, - AUCTION_IMP_ID: ortbBidResponse.impid, - AUCTION_CURRENCY: ortbBidResponse.cur, - AUCTION_BID_ID: context.bidderRequest.auctionId, - - // Custom macros - BIDDING_API_BASE_URL: utils.getAdServerEndpointBaseUrl(context.bidderRequest), - CREATIVE_ID: ortbBidResponse.crid, - CAMPAIGN_ID: ortbBidResponse.cid, - ORTB_ID: ortbBidResponse.id, - PUBLISHER_ID: utils.getPublisherId(context.bidderRequest), - }; - - _each(ORTB_RESPONSE_FIELDS_SUPPORT_MACROS, ortbField => { - deepSetValue( - ortbBidResponse, - ortbField, - replaceMacros(deepAccess(ortbBidResponse, ortbField), macros) - ); - }); - }, } diff --git a/test/spec/modules/mobkoiBidAdapter_spec.js b/test/spec/modules/mobkoiBidAdapter_spec.js index 31ce715992a..6d040e97bd9 100644 --- a/test/spec/modules/mobkoiBidAdapter_spec.js +++ b/test/spec/modules/mobkoiBidAdapter_spec.js @@ -7,7 +7,6 @@ import { describe('Mobkoi bidding Adapter', function () { const testAdServerBaseUrl = 'http://test.adServerBaseUrl.com'; const testRequestId = 'test-request-id'; - const testPublisherId = 'mobkoiPublisherId'; const testPlacementId = 'mobkoiPlacementId'; const testBidId = 'test-bid-id'; const bidderCode = 'mobkoi'; @@ -18,7 +17,6 @@ describe('Mobkoi bidding Adapter', function () { const getOrtb2 = () => ({ site: { publisher: { - id: testPublisherId, ext: { adServerBaseUrl: testAdServerBaseUrl } } } @@ -34,7 +32,6 @@ describe('Mobkoi bidding Adapter', function () { auctionId: testAuctionId, ortb2: getOrtb2(), params: { - publisherId: testPublisherId, adServerBaseUrl: testAdServerBaseUrl, placementId: testPlacementId } @@ -102,36 +99,14 @@ describe('Mobkoi bidding Adapter', function () { bid = getBidderRequest().bids[0]; }); - it('should return true when publisher id only exists in ortb2', function () { - delete bid.params.publisherId; - expect(spec.isBidRequestValid(bid)).to.equal(true); - }); - it('should return true when placement id exist in ad unit params', function () { expect(spec.isBidRequestValid(bid)).to.equal(true); }); - it('should return true when publisher ID only exists in ad unit params', function () { - delete bid.ortb2.site.publisher.id; - expect(spec.isBidRequestValid(bid)).to.equal(true); - }); - - it('should return false when publisher id is missing both in ad unit params and ortb2', function () { - delete bid.ortb2.site.publisher.id; - delete bid.params.publisherId; - expect(spec.isBidRequestValid(bid)).to.equal(false); - }); - it('should return false when placement id is missing in ad unit params', function () { delete bid.params.placementId; expect(spec.isBidRequestValid(bid)).to.equal(false); }); - - it('should return false when publisher id is empty in ad unit params and ortb2', function () { - bid.ortb2.site.publisher.id = ''; - bid.params.publisherId = ''; - expect(spec.isBidRequestValid(bid)).to.equal(false); - }); }); describe('buildRequests', function () { @@ -147,18 +122,9 @@ describe('Mobkoi bidding Adapter', function () { const ortbData = request.data; expect(ortbData.id).to.equal(bidderRequest.bidderRequestId); - expect(ortbData.site.publisher.id).to.equal(bidderRequest.ortb2.site.publisher.id); }); - it('should obtain publisher ID from ad unit params if the value does not exist in ortb2.', function () { - delete bidderRequest.ortb2.site.publisher.id; - const request = spec.buildRequests(bidderRequest.bids, bidderRequest); - const ortbData = request.data; - - expect(ortbData.site.publisher.id).to.equal(bidderRequest.bids[0].params.publisherId); - }); - - it('should obtain adServerBaseUrl from ad unit params if the value does not exist in ortb2.', function () { + it('should obtain adServerBaseUrl from ad unit params if the value does not exist in ortb2', function () { delete bidderRequest.ortb2.site.publisher.ext.adServerBaseUrl; const request = spec.buildRequests(bidderRequest.bids, bidderRequest); const ortbData = request.data; @@ -226,20 +192,6 @@ describe('Mobkoi bidding Adapter', function () { }); }) - describe('getPublisherId', function () { - it('should return the publisherId from the given object', function () { - expect(utils.getPublisherId(bidderRequest)).to.equal(bidderRequest.ortb2.site.publisher.id); - }); - - it('should throw error when publisherId is missing', function () { - delete bidderRequest.ortb2.site.publisher.id; - delete bidderRequest.bids[0].params.publisherId; - expect(() => { - utils.getPublisherId(bidderRequest); - }).to.throw(); - }); - }) - describe('getOrtbId', function () { it('should return the ortbId from the prebid request object (i.e bidderRequestId)', function () { expect(utils.getOrtbId(bidderRequest)).to.equal(bidderRequest.bidderRequestId); @@ -270,46 +222,5 @@ describe('Mobkoi bidding Adapter', function () { }).to.throw(); }); }) - - describe('replaceAllMacrosInPlace', function () { - let bidderResponse, bidRequest, bidderRequest; - - beforeEach(function () { - bidderRequest = getBidderRequest(); - bidRequest = spec.buildRequests(bidderRequest.bids, bidderRequest); - bidderResponse = getBidderResponse(); - }); - - it('should replace all macros in adm, nurl, and lurl fields', function () { - const bid = bidderResponse.body.seatbid[0].bid[0]; - bid.nurl = '${BIDDING_API_BASE_URL}/win?price=${AUCTION_PRICE}&impressionId=${AUCTION_IMP_ID}¤cy=${AUCTION_CURRENCY}&campaignId=${CAMPAIGN_ID}&creativeId=${CREATIVE_ID}&publisherId=${PUBLISHER_ID}&ortbId=${ORTB_ID}'; - bid.lurl = '${BIDDING_API_BASE_URL}/loss?price=${AUCTION_PRICE}&impressionId=${AUCTION_IMP_ID}¤cy=${AUCTION_CURRENCY}&campaignId=${CAMPAIGN_ID}&creativeId=${CREATIVE_ID}&publisherId=${PUBLISHER_ID}&ortbId=${ORTB_ID}'; - bid.adm = '