forked from prebid/Prebid.js
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge remote-tracking branch 'unstream/master'
* unstream/master: (36 commits) + Add Optimatic Bid Adapter (prebid#1837) Add Bridgewell adapter (prebid#1825) Kumma adapter updated for Prebid 1.0 (prebid#1766) Touchup add bid response (prebid#1822) Fix skipped test (prebid#1836) Added new size in Rubicon pbjs Adapter (prebid#1842) HuddledMasses header bidding adapter (prebid#1806) Increment pre version Prebid 0.33.0 Release Update AOL adapter for v1.0 (prebid#1693) Sovrn 1.0 compliance (prebid#1796) Platform.io Bidder Adapter update (prebid#1817) Drop non-video bidders from video ad units (prebid#1815) Update renderAd to replace ${AUCTION_PRICE} in adUrl (prebid#1795) Pulsepoint adapter: fixing bid rejection due to missing mandatory bid params. (prebid#1823) Remove require.ensure entirely (prebid#1816) Add custom keyword support for pbs bid adapter (prebid#1763) OpenX Video Adapter update to Prebid v1.0 (prebid#1724) Fix test that hard-coded pbjs global. (prebid#1786) Update Pollux Adapter to v1.0 (prebid#1694) ...
- Loading branch information
Showing
77 changed files
with
6,369 additions
and
3,422 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,140 @@ | ||
const { registerBidder } = require('../src/adapters/bidderFactory'); | ||
const utils = require('../src/utils'); | ||
|
||
const BIDDER_CODE = '33across'; | ||
const END_POINT = 'https://ssc.33across.com/api/v1/hb'; | ||
const SYNC_ENDPOINT = 'https://de.tynt.com/deb/v2?m=xch'; | ||
|
||
// All this assumes that only one bid is ever returned by ttx | ||
function _createBidResponse(response) { | ||
return { | ||
requestId: response.id, | ||
bidderCode: BIDDER_CODE, | ||
cpm: response.seatbid[0].bid[0].price, | ||
width: response.seatbid[0].bid[0].w, | ||
height: response.seatbid[0].bid[0].h, | ||
ad: response.seatbid[0].bid[0].adm, | ||
ttl: response.seatbid[0].bid[0].ttl || 60, | ||
creativeId: response.seatbid[0].bid[0].ext.rp.advid, | ||
currency: response.cur, | ||
netRevenue: true | ||
} | ||
} | ||
|
||
// infer the necessary data from valid bid for a minimal ttxRequest and create HTTP request | ||
function _createServerRequest(bidRequest) { | ||
const ttxRequest = {}; | ||
const params = bidRequest.params; | ||
|
||
ttxRequest.imp = []; | ||
ttxRequest.imp[0] = { | ||
banner: { | ||
format: bidRequest.sizes.map(_getFormatSize) | ||
}, | ||
ext: { | ||
ttx: { | ||
prod: params.productId | ||
} | ||
} | ||
} | ||
|
||
// Allowing site to be a test configuration object or just the id (former required for testing, | ||
// latter when used by publishers) | ||
ttxRequest.site = params.site || { id: params.siteId }; | ||
|
||
// Go ahead send the bidId in request to 33exchange so it's kept track of in the bid response and | ||
// therefore in ad targetting process | ||
ttxRequest.id = bidRequest.bidId; | ||
|
||
const options = { | ||
contentType: 'application/json', | ||
withCredentials: false | ||
}; | ||
|
||
if (bidRequest.params.customHeaders) { | ||
options.customHeaders = bidRequest.params.customHeaders; | ||
} | ||
|
||
return { | ||
'method': 'POST', | ||
'url': bidRequest.params.url || END_POINT, | ||
'data': JSON.stringify(ttxRequest), | ||
'options': options | ||
} | ||
} | ||
|
||
// Sync object will always be of type iframe for ttx | ||
function _createSync(bid) { | ||
const syncUrl = bid.params.syncUrl || SYNC_ENDPOINT; | ||
|
||
return { | ||
type: 'iframe', | ||
url: `${syncUrl}&id=${bid.params.siteId || bid.params.site.id}` | ||
} | ||
} | ||
|
||
function _getFormatSize(sizeArr) { | ||
return { | ||
w: sizeArr[0], | ||
h: sizeArr[1], | ||
ext: {} | ||
} | ||
} | ||
|
||
function isBidRequestValid(bid) { | ||
if (bid.bidder !== BIDDER_CODE || typeof bid.params === 'undefined') { | ||
return false; | ||
} | ||
|
||
if ((typeof bid.params.site === 'undefined' || typeof bid.params.site.id === 'undefined') && | ||
(typeof bid.params.siteId === 'undefined')) { | ||
return false; | ||
} | ||
|
||
if (typeof bid.params.productId === 'undefined') { | ||
return false; | ||
} | ||
|
||
return true; | ||
} | ||
|
||
// NOTE: At this point, 33exchange only accepts request for a single impression | ||
function buildRequests(bidRequests) { | ||
return bidRequests.map(_createServerRequest); | ||
} | ||
|
||
// NOTE: At this point, the response from 33exchange will only ever contain one bid i.e. the highest bid | ||
function interpretResponse(serverResponse) { | ||
const bidResponses = []; | ||
|
||
// If there are bids, look at the first bid of the first seatbid (see NOTE above for assumption about ttx) | ||
if (serverResponse.body.seatbid.length > 0 && serverResponse.body.seatbid[0].bid.length > 0) { | ||
bidResponses.push(_createBidResponse(serverResponse.body)); | ||
} | ||
|
||
return bidResponses; | ||
} | ||
|
||
// Register one sync per bid since each ad unit may potenitally be linked to a uniqe guid | ||
function getUserSyncs(syncOptions) { | ||
let syncs = []; | ||
const ttxBidRequests = utils.getBidderRequestAllAdUnits(BIDDER_CODE).bids; | ||
|
||
if (syncOptions.iframeEnabled) { | ||
syncs = ttxBidRequests.map(_createSync); | ||
} | ||
|
||
return syncs; | ||
} | ||
|
||
const spec = { | ||
code: BIDDER_CODE, | ||
isBidRequestValid, | ||
buildRequests, | ||
interpretResponse, | ||
getUserSyncs | ||
} | ||
|
||
registerBidder(spec); | ||
|
||
module.exports = spec; |
Oops, something went wrong.