From b118232f68c039e797af32dde380b2dff3fa94f3 Mon Sep 17 00:00:00 2001 From: Eng Tat Date: Thu, 22 Feb 2018 13:00:44 +0800 Subject: [PATCH 1/4] Innity Adapter for Prebid.js 1.0 --- modules/innityBidAdapter.js | 57 ++++++++++++ modules/innityBidAdapter.md | 25 ++++++ test/spec/modules/innityBidAdapter_spec.js | 100 +++++++++++++++++++++ 3 files changed, 182 insertions(+) create mode 100644 modules/innityBidAdapter.js create mode 100644 modules/innityBidAdapter.md create mode 100644 test/spec/modules/innityBidAdapter_spec.js diff --git a/modules/innityBidAdapter.js b/modules/innityBidAdapter.js new file mode 100644 index 00000000000..91d4b619430 --- /dev/null +++ b/modules/innityBidAdapter.js @@ -0,0 +1,57 @@ +import * as utils from 'src/utils'; +import { registerBidder } from 'src/adapters/bidderFactory'; + +const BIDDER_CODE = 'innity'; +const ENDPOINT = location.protocol + '//as.innity.com/synd/'; + +export const spec = { + code: BIDDER_CODE, + isBidRequestValid: function(bid) { + return !!(bid.params && bid.params.pub && bid.params.zone); + }, + buildRequests: function(validBidRequests) { + return validBidRequests.map(bidRequest => { + let parseSized = utils.parseSizesInput(bidRequest.sizes); + let arrSize = parseSized[0].split('x'); + return { + method: 'GET', + url: ENDPOINT, + data: { + cb: new Date().getTime(), + ver: 2, + hb: 1, + output: 'js', + pub: bidRequest.params.pub, + zone: bidRequest.params.zone, + url: encodeURIComponent(utils.getTopWindowUrl()), + width: arrSize[0], + height: arrSize[1], + vpw: window.screen.width, + vph: window.screen.height, + callback: 'json', + callback_uid: bidRequest.bidId, + auction: bidRequest.auctionId, + }, + }; + }); + }, + interpretResponse: function(serverResponse, request) { + const res = serverResponse.body; + const bidResponse = { + requestId: res.callback_uid, + cpm: parseFloat(res.cpm) / 100, + width: res.width, + height: res.height, + creativeId: res.creative_id, + currency: 'USD', + netRevenue: true, + ttl: 60, + ad: '' + res.tag, + }; + return [bidResponse]; + }, + getUserSyncs: function(syncOptions, serverResponses) { + return []; + } +} +registerBidder(spec); diff --git a/modules/innityBidAdapter.md b/modules/innityBidAdapter.md new file mode 100644 index 00000000000..b359a591ce8 --- /dev/null +++ b/modules/innityBidAdapter.md @@ -0,0 +1,25 @@ +# Overview + +**Module Name**: Innity Bidder Adapter +**Module Type**: Bidder Adapter +**Maintainer**: engtat@innity.com + +# Description + +Innity Bidder Adapter for Prebid.js. + +# Test Parameters +``` + var adUnits = [{ + code: 'div-gpt-ad-1460505748561-0', + sizes: [[300, 250]], + bids: [{ + bidder: 'innity', + params: { + pub: 267, + zone: 62546 + } + }] + }]; + +``` \ No newline at end of file diff --git a/test/spec/modules/innityBidAdapter_spec.js b/test/spec/modules/innityBidAdapter_spec.js new file mode 100644 index 00000000000..cbb06608529 --- /dev/null +++ b/test/spec/modules/innityBidAdapter_spec.js @@ -0,0 +1,100 @@ +import { expect } from 'chai'; +import { spec } from 'modules/innityBidAdapter'; + +describe('innityAdapterTest', () => { + describe('bidRequestValidity', () => { + it('bidRequest with pub ID and zone ID param', () => { + expect(spec.isBidRequestValid({ + bidder: 'innity', + params: { + 'pub': '267', + 'zone': '62546' + }, + })).to.equal(true); + }); + + it('bidRequest with no required params', () => { + expect(spec.isBidRequestValid({ + bidder: 'innity', + params: { + }, + })).to.equal(false); + }); + }); + + describe('bidRequest', () => { + const bidRequests = [{ + 'bidder': 'innity', + 'params': { + 'pub': '267', + 'zone': '62546' + }, + 'adUnitCode': 'div-gpt-ad-1460505748561-0', + 'transactionId': 'd7b773de-ceaa-484d-89ca-d9f51b8d61ec', + 'sizes': [300, 250], + 'bidId': '51ef8751f9aead', + 'bidderRequestId': '418b37f85e772c', + 'auctionId': '18fd8b8b0bd757' + }]; + + it('bidRequest HTTP method', () => { + const requests = spec.buildRequests(bidRequests); + requests.forEach(function(requestItem) { + expect(requestItem.method).to.equal('GET'); + }); + }); + + it('bidRequest data', () => { + const requests = spec.buildRequests(bidRequests); + expect(requests[0].data.pub).to.equal('267'); + expect(requests[0].data.zone).to.equal('62546'); + expect(requests[0].data.width).to.equal('300'); + expect(requests[0].data.height).to.equal('250'); + expect(requests[0].data.callback_uid).to.equal('51ef8751f9aead'); + }); + }); + + describe('interpretResponse', () => { + const bidRequest = { + 'method': 'GET', + 'url': 'https://as.innity.com/synd/?', + 'data': { + 'ver': 2, + 'hb': 1, + 'output': 'js', + 'pub': 267, + 'zone': 62546, + 'width': '300', + 'height': '250', + 'callback': 'json', + 'callback_uid': '51ef8751f9aead', + 'url': 'https://example.com', + 'cb': '', + } + }; + + const bidResponse = { + body: { + 'cpm': 100, + 'width': '300', + 'height': '250', + 'creative_id': '148186', + 'callback_uid': '51ef8751f9aead', + 'tag': '', + }, + headers: {} + }; + + it('result is correct', () => { + const result = spec.interpretResponse(bidResponse, bidRequest); + expect(result[0].requestId).to.equal('51ef8751f9aead'); + expect(result[0].cpm).to.equal(100 / 100); + expect(result[0].width).to.equal(300); + expect(result[0].height).to.equal(250); + expect(result[0].creativeId).to.equal('148186'); + expect(result[0].currency).to.equal('USD'); + expect(result[0].ttl).to.equal(60); + expect(result[0].ad).to.equal(''); + }); + }); +}); From e4d8ff501902cc4c1e961f868c1f0baf55b7c22e Mon Sep 17 00:00:00 2001 From: Eng Tat Date: Thu, 22 Feb 2018 14:04:50 +0800 Subject: [PATCH 2/4] Fix Innity Adapter Test Spec Error (#2180) --- test/spec/modules/innityBidAdapter_spec.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/test/spec/modules/innityBidAdapter_spec.js b/test/spec/modules/innityBidAdapter_spec.js index cbb06608529..87042ca6a6d 100644 --- a/test/spec/modules/innityBidAdapter_spec.js +++ b/test/spec/modules/innityBidAdapter_spec.js @@ -7,8 +7,8 @@ describe('innityAdapterTest', () => { expect(spec.isBidRequestValid({ bidder: 'innity', params: { - 'pub': '267', - 'zone': '62546' + 'pub': 267, + 'zone': 62546 }, })).to.equal(true); }); @@ -26,8 +26,8 @@ describe('innityAdapterTest', () => { const bidRequests = [{ 'bidder': 'innity', 'params': { - 'pub': '267', - 'zone': '62546' + 'pub': 267, + 'zone': 62546 }, 'adUnitCode': 'div-gpt-ad-1460505748561-0', 'transactionId': 'd7b773de-ceaa-484d-89ca-d9f51b8d61ec', @@ -46,8 +46,8 @@ describe('innityAdapterTest', () => { it('bidRequest data', () => { const requests = spec.buildRequests(bidRequests); - expect(requests[0].data.pub).to.equal('267'); - expect(requests[0].data.zone).to.equal('62546'); + expect(requests[0].data.pub).to.equal(267); + expect(requests[0].data.zone).to.equal(62546); expect(requests[0].data.width).to.equal('300'); expect(requests[0].data.height).to.equal('250'); expect(requests[0].data.callback_uid).to.equal('51ef8751f9aead'); @@ -88,13 +88,13 @@ describe('innityAdapterTest', () => { it('result is correct', () => { const result = spec.interpretResponse(bidResponse, bidRequest); expect(result[0].requestId).to.equal('51ef8751f9aead'); - expect(result[0].cpm).to.equal(100 / 100); - expect(result[0].width).to.equal(300); - expect(result[0].height).to.equal(250); + expect(result[0].cpm).to.equal(1); + expect(result[0].width).to.equal('300'); + expect(result[0].height).to.equal('250'); expect(result[0].creativeId).to.equal('148186'); expect(result[0].currency).to.equal('USD'); expect(result[0].ttl).to.equal(60); - expect(result[0].ad).to.equal(''); + expect(result[0].ad).to.equal(''); }); }); }); From c5a96159879714db5b271c3d6566b134c07a15f8 Mon Sep 17 00:00:00 2001 From: Eng Tat Date: Fri, 23 Feb 2018 13:58:10 +0800 Subject: [PATCH 3/4] Fix utils.timestamp and remove userSyncs (#2180) --- modules/innityBidAdapter.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/modules/innityBidAdapter.js b/modules/innityBidAdapter.js index 91d4b619430..880af2b6112 100644 --- a/modules/innityBidAdapter.js +++ b/modules/innityBidAdapter.js @@ -17,7 +17,7 @@ export const spec = { method: 'GET', url: ENDPOINT, data: { - cb: new Date().getTime(), + cb: utils.timestamp(), ver: 2, hb: 1, output: 'js', @@ -49,9 +49,6 @@ export const spec = { ad: '' + res.tag, }; return [bidResponse]; - }, - getUserSyncs: function(syncOptions, serverResponses) { - return []; } } registerBidder(spec); From c34b69314f4039a62fdad67c3cebf93e53df64e8 Mon Sep 17 00:00:00 2001 From: Eng Tat Date: Wed, 18 Dec 2019 19:53:49 +0800 Subject: [PATCH 4/4] Added Prebid.js 3.0 Support --- modules/innityBidAdapter.js | 16 ++++++++++------ modules/innityBidAdapter.md | 8 ++++++-- test/spec/modules/innityBidAdapter_spec.js | 14 ++++++++++---- 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/modules/innityBidAdapter.js b/modules/innityBidAdapter.js index 880af2b6112..ca281cd746b 100644 --- a/modules/innityBidAdapter.js +++ b/modules/innityBidAdapter.js @@ -1,15 +1,19 @@ -import * as utils from 'src/utils'; -import { registerBidder } from 'src/adapters/bidderFactory'; +import * as utils from '../src/utils'; +import { registerBidder } from '../src/adapters/bidderFactory'; const BIDDER_CODE = 'innity'; -const ENDPOINT = location.protocol + '//as.innity.com/synd/'; +const ENDPOINT = 'https://as.innity.com/synd/'; export const spec = { code: BIDDER_CODE, isBidRequestValid: function(bid) { return !!(bid.params && bid.params.pub && bid.params.zone); }, - buildRequests: function(validBidRequests) { + buildRequests: function(validBidRequests, bidderRequest) { + let refererInfo = ''; + if (bidderRequest && bidderRequest.refererInfo) { + refererInfo = bidderRequest.refererInfo.referer || ''; + } return validBidRequests.map(bidRequest => { let parseSized = utils.parseSizesInput(bidRequest.sizes); let arrSize = parseSized[0].split('x'); @@ -23,7 +27,7 @@ export const spec = { output: 'js', pub: bidRequest.params.pub, zone: bidRequest.params.zone, - url: encodeURIComponent(utils.getTopWindowUrl()), + url: encodeURIComponent(refererInfo), width: arrSize[0], height: arrSize[1], vpw: window.screen.width, @@ -46,7 +50,7 @@ export const spec = { currency: 'USD', netRevenue: true, ttl: 60, - ad: '' + res.tag, + ad: '' + res.tag, }; return [bidResponse]; } diff --git a/modules/innityBidAdapter.md b/modules/innityBidAdapter.md index b359a591ce8..1751df0edf6 100644 --- a/modules/innityBidAdapter.md +++ b/modules/innityBidAdapter.md @@ -11,8 +11,12 @@ Innity Bidder Adapter for Prebid.js. # Test Parameters ``` var adUnits = [{ - code: 'div-gpt-ad-1460505748561-0', - sizes: [[300, 250]], + code: '/19968336/header-bid-tag-0', + mediaTypes: { + banner: { + sizes: [[300, 250]], + } + }, bids: [{ bidder: 'innity', params: { diff --git a/test/spec/modules/innityBidAdapter_spec.js b/test/spec/modules/innityBidAdapter_spec.js index 87042ca6a6d..653fd762709 100644 --- a/test/spec/modules/innityBidAdapter_spec.js +++ b/test/spec/modules/innityBidAdapter_spec.js @@ -29,7 +29,7 @@ describe('innityAdapterTest', () => { 'pub': 267, 'zone': 62546 }, - 'adUnitCode': 'div-gpt-ad-1460505748561-0', + 'adUnitCode': '/19968336/header-bid-tag-0', 'transactionId': 'd7b773de-ceaa-484d-89ca-d9f51b8d61ec', 'sizes': [300, 250], 'bidId': '51ef8751f9aead', @@ -37,15 +37,21 @@ describe('innityAdapterTest', () => { 'auctionId': '18fd8b8b0bd757' }]; + const bidderRequest = { + refererInfo: { + referer: 'https://example.com' + } + }; + it('bidRequest HTTP method', () => { - const requests = spec.buildRequests(bidRequests); + const requests = spec.buildRequests(bidRequests, bidderRequest); requests.forEach(function(requestItem) { expect(requestItem.method).to.equal('GET'); }); }); it('bidRequest data', () => { - const requests = spec.buildRequests(bidRequests); + const requests = spec.buildRequests(bidRequests, bidderRequest); expect(requests[0].data.pub).to.equal(267); expect(requests[0].data.zone).to.equal(62546); expect(requests[0].data.width).to.equal('300'); @@ -94,7 +100,7 @@ describe('innityAdapterTest', () => { expect(result[0].creativeId).to.equal('148186'); expect(result[0].currency).to.equal('USD'); expect(result[0].ttl).to.equal(60); - expect(result[0].ad).to.equal(''); + expect(result[0].ad).to.equal(''); }); }); });