Skip to content

Commit

Permalink
Merge Prebid 1.0 to Master (prebid#1936)
Browse files Browse the repository at this point in the history
* Concurrent auctions (prebid#1593)

* Adding timestamp function to utils

* Auction manager (WIP)

* WIP

* Updated targeting with auction instances and added auction status

* Updated appnexus and appnexusAst adapter

* Added done callback

* Removing bidmanager functions

* Removing deprecated public api functions

* remove bidmanager file

* Revert "remove bidmanager file"

This reverts commit 616409e.

* Updated appnexus and rubicon adapters to call done callback after all responses are back

* Added todo

* Fixing circular dependency

* filter s2s requests

* Emit auction end
Add getBidsRequested function

* remove unused stuff from adapters

* cleanup and fixes

* Unit test fixes
Added exclude to karma temporarily to support unit tests

* added setTimeout for each auction instance

* added constants closer to code

* binded auction object inside done method

* Adding auctionmanager_spec tests and fixes

* Remove breakpoint

* Moving auction to separate file and unit tests

* Merged manually

* Merged config api changes

* Passing adunits, adunitscodes via constructor and fixing unit tests

* added ajax with timeout

* convert targeting module to factory pattern

* Auction code refactored and unit tests

* Updated bidderfactory for 1.0 changes and added unit tests

* Renamed placementCode to adUnitCode

* Refactor auction and update unit tests

* JSDoc for auction and auctionManager

* Unit test fixes after rebase

* Manual merge new updates to bidmanager and its spec file into auction

* Update appnexusAst spec file

* Refactor

* Prebid 1.0 does not require no_bid to be added

* removed side effect by cloning objects

* bug fix to set status on already used bid

* Removing all !1.0 complaiant adapters

* Adding aliases to appnexusAst adapter

* Removed bidmanager from currency

* Add ignore-loader to handle .md files (prebid#1646)

* Auction module refactor (prebid#1644)

* Auction moduel refactor

* remove comment and global cbtimeout

* Config api updates (prebid#1633)

* Add timeoutBuffer, s2sconfig, bidderSequence to config

* Removing deprecated function and its unit test

* fixed linting errors

* Adapter/rubicon bid adapter markup (prebid#1674)

* initial take on rubiconBidAdapter markup

* formatting

* formatting, cont.

* formatting, cont.

* Prebid 1.0 Fix issue with video bid validation (prebid#1680)

* Fix issue with video bid validation

* Modified tests to stub `auctionManager.getBidsRequested` instead of `getBidRequest`

* Move stub to beforeEach hook

* Fix lint errors

* Add bidRequests param to bid validation

* Auction module updated to support currency/hook (prebid#1733)

* added hook module to prebid core that allows extension of arbitrary functions

* remove unused dependency tiny-queue

* change PluginFunction to HookedFunction

* more hook documentation fixes

* Auction module updated to support currency/hook

* remove unused dependency tiny-queue

* change PluginFunction to HookedFunction

* more hook documentation fixes

* WIP

* allow context for hooked functions

* added tests for context

* remove withContext, just use bind

* fix in hooks so asyncSeries keeps proper bound context

* Unit test fixes

* Updated bid validation function

* Fixed video unit test

* updated sizeMapping to use sizeConfig and support labels (prebid#1772)

* updated sizeMapping to use sizeConfig and support labels

* added new tests for labels and sizes w/ sizeConfig when making auction

* made some names clearer and added type to labels for sizeMapping

* make error message more descriptive in adaptermanager

* remove extra line in adpatermanager

* update package.json with correct version. (prebid#1813)

* Unit test fixes for IE 10 and other old browsers (prebid#1810)

* Added fix for location.origin

* Fixed test case failing in IE and Safari browsers

* Added utils.getOrigin method

* Updated renderer to use hooks

* Rename appnexusAst adapter to appnexus adapter (prebid#1848)

* Renamed appnexusAst adapter to appnexus

* Updated unit test to use appnexus bidderCode

* Remove completed todo comment

* fixed safeframe for 1.0 (prebid#1834)

* Emit array of objects from BID_TIMEOUT event (prebid#1824)

* Emit array of objects from BID_TIMEOUT event

* requestId is now auctionId

* Use v4 UUID to match previous requestId format

* Move function

* Move public winningBids to auction (prebid#1828)

* Move public winningBids to auction

* removed _winningBids

* removed _winningBids

* bugfix: return only new bids

* Updates for PubWise Prebid 1.0 Support (prebid#1847)

* Updates for Prebid 1.0 Support

* Updates for Bug Fixes and a small refactor

* update JSDoc comment. Remove trailing space (prebid#1872)

tests were failing due to no trailing space eslint rule.

* Prebid 1.0 adxcg analytics adapter fix for bidtimeout event (prebid#1871)

* adxcg analytics adapter for 1.0 bidtimeout event

* update tests for adxcg analytics 1.0

* Prebid 1.0 prebid server (prebid#1846)

* fix adaptermanager s2sTest unit tests

* fix s2s log message

* remove errant comment

* fixed log statement

* removed seemingly unnecessary call to transformHeightWidth(adUnit);

* removed legacy sizeMapping code block

* initial refactor of prebidServerBidAdapter working w/o tests

(cherry picked from commit 2b843d0)

* add transformSizes back for prebidServer adUnits to fix request

* fixed adapterManager_spec tests

* added prebidServerBidAdapter tests for 1.0

* fixed lint errors

* make sure addBidResponse and doneCb are stubbed for s2s calls

* s2s requests now firing BID_REQUESTED event

* fixed commented tests and other minor fixes

* update defaults in prebidServerBidAdapter and fix doBidderSync bug

* add new API for setting defaults in config for modules

* Targeting updates (prebid#1689)

* Cherry pick alias bidder

* Cherry pick alias bidder

* Cherry pick alias bidder

* Updated test case to not import adapter

* targeting updates

* targeting functions refactoring

* Refactored functions

* more refactor of function

* added jsdoc and some more refactor

* check bid expiry and filtering used bids

* make sure we have the right version

* Update version to fix invalid semver

* video bug fix (prebid#1906)

* video bug fix
added required params to prebidServerAdapter

* Emitted auction_end and updated ttl for prebidServer

* fix logging of server adapters

* Manually merge bidManager code to auction module (prebid#1905)

* Unit test fix in IE for adxcgAnalytics Adapter (prebid#1929)

* IE bug fix

* get only unique bidders

* added log message for xhr timeout (prebid#1928)

* remove polyfill.js and remove global polyfills (prebid#1918)

* remove polyfill.js and remove global polyfills

* make sure find, findIndex, and includes use core-js in tests

* switch from virtual function bind core-js to explicit usage.

* remove transform-function-bind babel plugin

* Replace usePrebidCache with cache:url and remove default (prebid#1904)

* replace usePrebidCache with video:cacheUrl and remove default

* remove newConfig in dfpAdServerVideo_spec that isn't doing anything

* change video.cacheUrl to cache.url

* update to cache.url in auction and remove from adapter

* pulsepointLiteBidAdapter renamed to pulsepointBidAdapter (prebid#1931)

* ET-1691: Pulsepoint Analytics adapter for Prebid. (prebid#1)

* ET-1691: Adding pulsepoint analytics and tests for pulsepoint adapter

* ET-1691: Adding pulsepoint analytics and tests for pulsepoint adapter

* ET-1691: cleanup

* ET-1691: minor

* ET-1691: revert package.json change

* Adding bidRequest to bidFactory.createBid method as per prebid#509

* ET-1765: Adding support for additional params in PulsePoint adapter (prebid#2)

* ET-1850: Fixing prebid#866

* Minor fix

* Adding mandatory parameters to Bid

* Pulsepoint adapter changes

* readme updates

* add 'x_source.tid' to rubicon requests (prebid#1933)

* Bring in pre-1.0 native-image asset adapter change (prebid#1934)

* 33Across Adapter: Removed the usage of utils library (prebid#1917)

* Removed the usage of utils library to get bidder requests during userSync since this info will now be passed into the method

* Fixed extra space which cause lint to fail

* Implemented user sync per code review feedback in prebid#1917

* Minor feedback changes

* Re-instated lint check for all files which was accidentally commited after testing

* Prebid 1.0 server cache (prebid#1935)

* add cache stuff to video for prebid server

* add description for cacheMarkup
  • Loading branch information
jaiminpanchal27 authored and matthewlane committed Dec 7, 2017
1 parent edcb4a4 commit 377c4c2
Show file tree
Hide file tree
Showing 194 changed files with 6,020 additions and 32,816 deletions.
6 changes: 5 additions & 1 deletion .babelrc
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
{
"presets": ["es2015"],
"plugins": ["transform-object-assign", "transform-es3-property-literals", "transform-es3-member-expression-literals"]
"plugins": [
"transform-object-assign",
"transform-es3-property-literals",
"transform-es3-member-expression-literals"
]
}
170 changes: 85 additions & 85 deletions integrationExamples/gpt/hello_world.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,91 +12,91 @@
-->

<html>
<head>
<script>
var PREBID_TIMEOUT = 700;

var adUnits = [{
code: 'div-gpt-ad-1460505748561-0',
sizes: [[300, 250], [300,600]],

// Replace this object to test a new Adapter!
bids: [{
bidder: 'appnexus',
params: {
placementId: '10433394'
}
}]

}];

var pbjs = pbjs || {};
pbjs.que = pbjs.que || [];

</script>

<script type="text/javascript" src="../../build/dev/prebid.js" async></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
});
});

function sendAdserverRequest() {
if (pbjs.adserverRequestSent) return;
pbjs.adserverRequestSent = true;
<head>
<script>
var PREBID_TIMEOUT = 700;

var adUnits = [{
code: 'div-gpt-ad-1460505748561-0',
sizes: [[300, 250], [300,600]],

// Replace this object to test a new Adapter!
bids: [{
bidder: 'appnexusAst',
params: {
placementId: '10433394'
}
}]

}];

var pbjs = pbjs || {};
pbjs.que = pbjs.que || [];

</script>

<script type="text/javascript" src="../../build/dev/prebid.js" async></script>
<script>
var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];
googletag.cmd.push(function() {
pbjs.que.push(function() {
pbjs.setTargetingForGPTAsync();
googletag.pubads().refresh();
googletag.pubads().disableInitialLoad();
});

pbjs.que.push(function() {
pbjs.addAdUnits(adUnits);
pbjs.requestBids({
bidsBackHandler: sendAdserverRequest
});
});
}

setTimeout(function() {
sendAdserverRequest();
}, PREBID_TIMEOUT);

</script>

<script>
(function () {
var gads = document.createElement('script');
gads.async = true;
gads.type = 'text/javascript';
var useSSL = 'https:' == document.location.protocol;
gads.src = (useSSL ? 'https:' : 'http:') +
'//www.googletagservices.com/tag/js/gpt.js';
var node = document.getElementsByTagName('script')[0];
node.parentNode.insertBefore(gads, node);
})();
</script>

<script>
googletag.cmd.push(function () {
googletag.defineSlot('/19968336/header-bid-tag-0', [[300, 250], [300, 600]], 'div-gpt-ad-1460505748561-0').addService(googletag.pubads());

googletag.pubads().enableSingleRequest();
googletag.enableServices();
});
</script>
</head>

<body>
<h2>Prebid.js Test</h2>
<h5>Div-1</h5>
<div id='div-gpt-ad-1460505748561-0'>
<script type='text/javascript'>
googletag.cmd.push(function() { googletag.display('div-gpt-ad-1460505748561-0'); });
</script>
</div>
</body>
</html>

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();
}, PREBID_TIMEOUT);

</script>

<script>
(function () {
var gads = document.createElement('script');
gads.async = true;
gads.type = 'text/javascript';
var useSSL = 'https:' == document.location.protocol;
gads.src = (useSSL ? 'https:' : 'http:') +
'//www.googletagservices.com/tag/js/gpt.js';
var node = document.getElementsByTagName('script')[0];
node.parentNode.insertBefore(gads, node);
})();
</script>

<script>
googletag.cmd.push(function () {
googletag.defineSlot('/19968336/header-bid-tag-0', [[300, 250], [300, 600]], 'div-gpt-ad-1460505748561-0').addService(googletag.pubads());

googletag.pubads().enableSingleRequest();
googletag.enableServices();
});
</script>
</head>

<body>
<h2>Prebid.js Test</h2>
<h5>Div-1</h5>
<div id='div-gpt-ad-1460505748561-0'>
<script type='text/javascript'>
googletag.cmd.push(function() { googletag.display('div-gpt-ad-1460505748561-0'); });
</script>
</div>
</body>
</html>
65 changes: 32 additions & 33 deletions modules/33acrossBidAdapter.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { userSync } from 'src/userSync'
const { registerBidder } = require('../src/adapters/bidderFactory');
const utils = require('../src/utils');
const { config } = require('../src/config');

const BIDDER_CODE = '33across';
const END_POINT = 'https://ssc.33across.com/api/v1/hb';
Expand Down Expand Up @@ -38,9 +39,7 @@ function _createServerRequest(bidRequest) {
}
}

// 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 };
ttxRequest.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
Expand All @@ -51,28 +50,18 @@ function _createServerRequest(bidRequest) {
withCredentials: false
};

if (bidRequest.params.customHeaders) {
options.customHeaders = bidRequest.params.customHeaders;
}
// Allow the ability to configure the HB endpoint for testing purposes.
const ttxSettings = config.getConfig('ttxSettings');
const url = (ttxSettings && ttxSettings.url) || END_POINT;

return {
'method': 'POST',
'url': bidRequest.params.url || END_POINT,
'url': url,
'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],
Expand All @@ -81,6 +70,24 @@ function _getFormatSize(sizeArr) {
}
}

// Register one sync per bid since each ad unit may potenitally be linked to a uniqe guid
// Sync type will always be 'iframe' for 33Across
function _registerUserSyncs(requestData) {
let ttxRequest;
try {
ttxRequest = JSON.parse(requestData);
} catch (err) {
// No point in trying to register sync since the requisite data cannot be parsed.
return;
}
const ttxSettings = config.getConfig('ttxSettings');

let syncUrl = (ttxSettings && ttxSettings.syncUrl) || SYNC_ENDPOINT;

syncUrl = `${syncUrl}&id=${ttxRequest.site.id}`;
userSync.registerSync('iframe', BIDDER_CODE, syncUrl);
}

function isBidRequestValid(bid) {
if (bid.bidder !== BIDDER_CODE || typeof bid.params === 'undefined') {
return false;
Expand All @@ -104,7 +111,12 @@ function buildRequests(bidRequests) {
}

// NOTE: At this point, the response from 33exchange will only ever contain one bid i.e. the highest bid
function interpretResponse(serverResponse) {
function interpretResponse(serverResponse, bidRequest) {
// Register user sync first
if (bidRequest && bidRequest.data) {
_registerUserSyncs(bidRequest.data);
}

const bidResponses = [];

// If there are bids, look at the first bid of the first seatbid (see NOTE above for assumption about ttx)
Expand All @@ -115,24 +127,11 @@ function interpretResponse(serverResponse) {
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
interpretResponse
}

registerBidder(spec);
Expand Down
Loading

0 comments on commit 377c4c2

Please sign in to comment.