-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* add test adapter and documentation * integration test with hello_world * reset package-lock.json * delete useless conditionnal * make integrate test work * revert hello-world * revert hello_world * fix descriptor * change adUnits for integration test * remove proxistore widget * uncomment file * change sizes * remove useless script tag
- Loading branch information
1 parent
61dfe59
commit c1aeb2f
Showing
5 changed files
with
463 additions
and
61 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,118 @@ | ||
<html> | ||
|
||
<head> | ||
<script async src="../../build/dev/prebid.js"></script> | ||
<script async src="https://www.googletagservices.com/tag/js/gpt.js"></script> | ||
<script> | ||
var FAILSAFE_TIMEOUT = 3300; | ||
var PREBID_TIMEOUT = 1000; | ||
|
||
var adUnits = [ | ||
{ | ||
code: 'div-test-half-page', | ||
mediaTypes: { | ||
banner: { | ||
sizes: [[300, 600]] | ||
} | ||
}, | ||
bids: [ | ||
{ | ||
bidder: 'proxistore', | ||
params: { | ||
website: 'example.com', | ||
language: 'fr' | ||
} | ||
}] | ||
}, | ||
{ | ||
code: 'rectangle', | ||
mediaTypes: { | ||
banner: { | ||
sizes: [[300, 250]] | ||
} | ||
}, | ||
bids: [{ | ||
bidder: 'proxistore', | ||
params: { | ||
website: 'example.com', | ||
language: 'fr' | ||
} | ||
}] | ||
}, | ||
{ | ||
code: 'leaderboard', | ||
mediaTypes: { | ||
banner: { | ||
sizes: [[970, 250]] | ||
} | ||
}, | ||
bids: [{ | ||
bidder: 'proxistore', | ||
params: { | ||
website: 'example.com', | ||
language: 'fr' | ||
} | ||
}] | ||
} | ||
]; | ||
|
||
var pbjs = pbjs || {}; | ||
pbjs.que = pbjs.que || []; | ||
|
||
</script> | ||
|
||
<script> | ||
var googletag = googletag || {}; | ||
googletag.cmd = googletag.cmd || []; | ||
googletag.cmd.push(function () { | ||
googletag.pubads().disableInitialLoad(); | ||
}); | ||
|
||
pbjs.que.push(function () { | ||
pbjs.addAdUnits(adUnits); | ||
pbjs.requestBids({ | ||
bidsBackHandler: sendAdserverRequest, | ||
timeout: PREBID_TIMEOUT | ||
}); | ||
}); | ||
|
||
function sendAdserverRequest() { | ||
if (pbjs.adserverRequestSent) return; | ||
pbjs.adserverRequestSent = true; | ||
googletag.cmd.push(function () { | ||
pbjs.que.push(function () { | ||
pbjs.setTargetingForGPTAsync(); | ||
googletag.pubads().refresh(); | ||
}); | ||
}); | ||
} | ||
|
||
setTimeout(function () { | ||
sendAdserverRequest(); | ||
}, FAILSAFE_TIMEOUT); | ||
|
||
</script> | ||
|
||
<script> | ||
googletag.cmd.push(function () { | ||
googletag.defineSlot('/19968336/header-bid-tag-0', [[300, 250], [300, 600]], 'div-test-half-page').addService(googletag.pubads()); | ||
|
||
googletag.pubads().enableSingleRequest(); | ||
googletag.enableServices(); | ||
}); | ||
</script> | ||
</head> | ||
|
||
<body> | ||
<h2>Prebid.js Test</h2> | ||
|
||
<h5>Div-1</h5> | ||
|
||
<div id='div-test-half-page'> | ||
<script type='text/javascript'> | ||
googletag.cmd.push(function () { googletag.display('div-test-half-page'); }); | ||
</script> | ||
</div> | ||
</body> | ||
|
||
</html> |
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,125 @@ | ||
const { registerBidder } = require('../src/adapters/bidderFactory'); | ||
const BIDDER_CODE = 'proxistore'; | ||
|
||
function _getFormatSize(sizeArr) { | ||
return { | ||
width: sizeArr[0], | ||
height: sizeArr[1] | ||
} | ||
} | ||
|
||
function _createServerRequest(bidRequest, bidderRequest) { | ||
const payload = { | ||
bidId: bidRequest.bidId, | ||
auctionId: bidRequest.auctionId, | ||
transactionId: bidRequest.transactionId, | ||
sizes: bidRequest.sizes.map(_getFormatSize), | ||
website: bidRequest.params.website, | ||
language: bidRequest.params.language, | ||
gdpr: { | ||
applies: false | ||
} | ||
}; | ||
|
||
const options = { | ||
contentType: 'application/json', | ||
withCredentials: true | ||
}; | ||
|
||
if (bidderRequest && bidderRequest.gdprConsent) { | ||
if ((typeof bidderRequest.gdprConsent.gdprApplies === 'boolean') && bidderRequest.gdprConsent.gdprApplies) { | ||
payload.gdpr.applies = true; | ||
} | ||
if ((typeof bidderRequest.gdprConsent.consentString === 'string') && bidderRequest.gdprConsent.consentString) { | ||
payload.gdpr['consentString'] = bidderRequest.gdprConsent.consentString; | ||
} | ||
} | ||
|
||
return { | ||
method: 'POST', | ||
url: bidRequest.params.url || '//abs.proxistore.com/' + bidRequest.params.language + '/v3/rtb/prebid', | ||
data: JSON.stringify(payload), | ||
options: options | ||
}; | ||
} | ||
|
||
function _createBidResponse(response) { | ||
return { | ||
requestId: response.requestId, | ||
cpm: response.cpm, | ||
width: response.width, | ||
height: response.height, | ||
ad: response.ad, | ||
ttl: response.ttl, | ||
creativeId: response.creativeId, | ||
currency: response.currency, | ||
netRevenue: response.netRevenue, | ||
vastUrl: response.vastUrl, | ||
vastXml: response.vastXml, | ||
dealId: response.dealId | ||
} | ||
} | ||
|
||
/** | ||
* Determines whether or not the given bid request is valid. | ||
* | ||
* @param bid The bid params to validate. | ||
* @return boolean True if this is a valid bid, and false otherwise. | ||
*/ | ||
function isBidRequestValid(bid) { | ||
return !!(bid.params.website && bid.params.language); | ||
} | ||
|
||
/** | ||
* Make a server request from the list of BidRequests. | ||
* | ||
* @param bidRequests - an array of bids | ||
* @param bidderRequest | ||
* @return ServerRequest Info describing the request to the server. | ||
*/ | ||
function buildRequests(bidRequests, bidderRequest) { | ||
var requests = []; | ||
for (var i = 0; i < bidRequests.length; i++) { | ||
var prebidReq = _createServerRequest(bidRequests[i], bidderRequest); | ||
requests.push(prebidReq); | ||
} | ||
return requests; | ||
} | ||
|
||
/** | ||
* Unpack the response from the server into a list of bids. | ||
* | ||
* @param serverResponse A successful response from the server. | ||
* @param bidRequest Request original server request | ||
* @return An array of bids which were nested inside the server. | ||
*/ | ||
function interpretResponse(serverResponse, bidRequest) { | ||
if (serverResponse.body.length > 0) { | ||
return serverResponse.body.map(_createBidResponse); | ||
} else { | ||
return []; | ||
} | ||
} | ||
|
||
/** | ||
* Register the user sync pixels which should be dropped after the auction. | ||
* | ||
* @param syncOptions Which user syncs are allowed? | ||
* @param serverResponses List of server's responses. | ||
* @return The user syncs which should be dropped. | ||
*/ | ||
function getUserSyncs(syncOptions, serverResponses) { | ||
return []; | ||
} | ||
|
||
const spec = { | ||
code: BIDDER_CODE, | ||
isBidRequestValid: isBidRequestValid, | ||
buildRequests: buildRequests, | ||
interpretResponse: interpretResponse, | ||
getUserSyncs: getUserSyncs | ||
}; | ||
|
||
registerBidder(spec); | ||
|
||
module.exports = spec; |
Oops, something went wrong.