Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix for the aliases conflict #4

Merged
merged 44 commits into from
Aug 26, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
b9ebe16
user id module refresh ids when consent changes (#5451)
smenzer Aug 13, 2020
ef00b3f
Fix v2CmpResponseCallback handle (#5564)
akiselicki-liveramp Aug 13, 2020
c34786d
TCFv2.0 Purpose 7 (#5444)
Fawke Aug 13, 2020
a761b31
prebid.js 4.3.0 release
mkendall07 Aug 13, 2020
22a59bd
4.4.0-pre
mkendall07 Aug 13, 2020
7ede93b
PubMatic to support passing content object set in pbjs.setConfig (#5592)
pm-harshad-mane Aug 14, 2020
db02d8a
PubMatic: Support for Outstream Renderer (BlueBilyWig Renderer) (#5553)
pm-shashank-jain Aug 14, 2020
84e2361
AdButler Bid Adapter: Add Doceree as alias (#5598)
dharton Aug 17, 2020
952e0fb
Digitrust removal, broader identity support, floor-module support (#5…
rtuschkany Aug 17, 2020
7696428
Adds support for additional consent (#5600)
patmmccann Aug 17, 2020
97713dd
pass along providers (#5610)
robertrmartinez Aug 17, 2020
f983af2
Emx bid adapter: gdpr user sync update (#5611)
EMXDigital Aug 18, 2020
cc58b23
Yieldone Analytics Adapter: Fix empty events (#5617)
hbanalytics Aug 18, 2020
8646ba7
Add Bright Mountain Media Bid Adapter (#5593)
BrightMountainMediaInc Aug 18, 2020
38e078e
Added IronSource bidder tests and adapter according to specs (#5568)
liranbaruch Aug 18, 2020
0e182b7
add provider when noData (#5621)
robertrmartinez Aug 18, 2020
6c61de8
Configure Adhese gvlid, filter out empty params to reduce the Adhese …
mefjush Aug 18, 2020
28a4c34
Update rubicon adapter for liveramp userid requirements change (#5620)
Aug 18, 2020
3b5a747
Add intentIq (#5624)
yuvalgg Aug 18, 2020
fb72d51
Adds advertiserDomains to kargo adapter (#5625)
patmmccann Aug 18, 2020
c0850e9
Adding alias (#5622)
itaynave Aug 18, 2020
b01fe09
oneVideo Adapter: User sync pixel updates (VIDEOPUB-17981) (#5583)
adam-browning Aug 18, 2020
e1100af
surround getFloor in try catch (#5628)
robertrmartinez Aug 19, 2020
23af840
Extending the Real Time Data Module (#5519)
omerDotan Aug 19, 2020
f0e4433
Update dfpAdServerVideo.js to allow for vast4 (#5608)
patmmccann Aug 20, 2020
ce00f4c
purposes in call for invibes (#5533)
invibes Aug 20, 2020
2c0ea15
Update rubicon adapter for sharedid userid support (#5627)
Aug 20, 2020
1a38f40
Allow hp:0 in supply chain nodes passed to Rubicon (#5629)
mgriego Aug 20, 2020
a1692da
Add a new bidder adapter :mediagoBidderAdapter (#5614)
SylviaF Aug 20, 2020
0d8d9bf
updated userid module to stop caching the entire consent object (#5641)
smenzer Aug 20, 2020
b4c6b47
New bidder & analytics adapter: Concert (attempt #2) (#5623)
jplhomer Aug 20, 2020
40e5c7d
rename simpleHash to cyrb53Hash to make it clearer which hash functio…
smenzer Aug 20, 2020
67d184a
DMX support for video instream and more user id support (#5618)
stevealliance Aug 20, 2020
494015f
JW Player Real Time Data Provider (#5537)
karimMourra Aug 20, 2020
1d1ffa3
Prebid 4.4.0 Release
robertrmartinez Aug 20, 2020
8513f13
Increment pre version
robertrmartinez Aug 20, 2020
32066aa
module rule documentation updates (#5619)
bretg Aug 22, 2020
29bd8de
Add sspBC adapter (#5531)
wojciech-bialy-wpm Aug 24, 2020
b26bfe3
[IdentityLinkIdSystem] - pass tcfv2 consent string to envelope api (#…
NemanjaRajkovic9 Aug 24, 2020
01f4b28
Fix bug and add tests to catch next time (#5656)
robertrmartinez Aug 24, 2020
7001a23
Update vidazooBidAdapter_spec.js (#5639)
patmmccann Aug 25, 2020
71ff934
Add smartxBidAdapter (#5275)
smartclip-adtech Aug 25, 2020
e2c4e69
Add GDPR parameters to yieldlab delivery adtag (#5658)
mirkorean Aug 26, 2020
61536f4
Merge remote-tracking branch 'upstream/master'
roshecode Aug 26, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ master branch.
Pull requests must have 80% code coverage before beign considered for merge.
Additional details about the process can be found [here](./PR_REVIEW.md).

There are more details available if you'd like to contribute a [bid adapter](https://docs.prebid.org/dev-docs/bidder-adaptor.html) or [analytics adapter](https://docs.prebid.org/dev-docs/integrate-with-the-prebid-analytics-api.html).

## Issues
[prebid.org](http://prebid.org/) contains documentation that may help answer questions you have about using Prebid.js.
If you can't find the answer there, try searching for a similar issue on the [issues page](https://github.com/prebid/Prebid.js/issues).
Expand Down
23 changes: 11 additions & 12 deletions PR_REVIEW.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ For modules and core platform updates, the initial reviewer should request an ad
- Review for obvious errors or bad coding practice / use best judgement here.
- If the change is a new feature / change to core prebid.js - review the change with a Tech Lead on the project and make sure they agree with the nature of change.
- If the change results in needing updates to docs (such as public API change, module interface etc), add a label for "needs docs" and inform the submitter they must submit a docs PR to update the appropriate area of Prebid.org **before the PR can merge**. Help them with finding where the docs are located on prebid.org if needed.
- Below are some examples of bidder specific updates that should require docs update (in their dev-docs/bidders/bidder.md file):
- Below are some examples of bidder specific updates that should require docs update (in their dev-docs/bidders/BIDDER.md file):
- If they support the GDPR consentManagement module and TCF1, add `gdpr_supported: true`
- If they support the GDPR consentManagement module and TCF2, add `tcf2_supported: true`
- If they support the US Privacy consentManagementUsp module, add `usp_supported: true`
Expand All @@ -23,7 +23,7 @@ For modules and core platform updates, the initial reviewer should request an ad
- If they support COPPA, add `coppa_supported: true`
- If they support SChain, add `schain_supported: true`
- If their bidder doesn't work well with safeframed creatives, add `safeframes_ok: false`. This will alert publishers to not use safeframed creatives when creating the ad server entries for their bidder.
- If they're a member of Prebid.org, add `prebid_member: true`
- If they're setting a deal ID in some scenarios, add `bidder_supports_deals: true`
- If all above is good, add a `LGTM` comment and request 1 additional core member to review.
- Once there is 2 `LGTM` on the PR, merge to master
- Ask the submitter to add a PR for documentation if applicable.
Expand All @@ -34,18 +34,17 @@ For modules and core platform updates, the initial reviewer should request an ad
- Follow steps above for general review process. In addition, please verify the following:
- Verify that bidder has submitted valid bid params and that bids are being received.
- Verify that bidder is not manipulating the prebid.js auction in any way or doing things that go against the principles of the project. If unsure check with the Tech Lead.
- Verify that the bidder is being as efficient as possible, ideally not loading an external library, however if they do load a library it should be cached.
- Verify that code re-use is being done properly and that changes introduced by a bidder don't impact other bidders.
- If the adapter being submitted is an alias type, check with the bidder contact that is being aliased to make sure it's allowed.
- If the adapter is triggering any user syncs make sure they are using the user sync module in the Prebid.js core.
- Requests to the bidder should support HTTPS
- Responses from the bidder should be compressed (such as gzip, compress, deflate)
- Bid responses may not use JSONP: All requests must be AJAX with JSON responses
- Video openrtb params should be read from the ad unit when available; however bidder config can override the ad unit.
- All user-sync (aka pixel) activity must be registered via the provided functions
- Adapters may not use the $$PREBID_GLOBAL$$ variable
- All adapters must support the creation of multiple concurrent instances. This means, for example, that adapters cannot rely on mutable global variables.
- Adapters may not globally override or default the standard ad server targeting values: hb_adid, hb_bidder, hb_pb, hb_deal, or hb_size, hb_source, hb_format.
- All required global and bidder-adapter rules defined in the [Module Rules](https://docs.prebid.org/dev-docs/module-rules.html) must be followed. Please review these rules often - we depend on reviewers to enforce them.
- All bidder parameter conventions must be followed:
- Video params must be read from AdUnit.mediaTypes.video when available; however bidder config can override the ad unit.
- First party data must be read from [`fpd.context` and `fpd.user`](https://docs.prebid.org/dev-docs/publisher-api-reference.html#setConfig-fpd).
- Adapters that accept a floor parameter must also support the [floors module](https://docs.prebid.org/dev-docs/modules/floors.html) -- look for a call to the `getFloors()` function.
- Adapters cannot accept an schain parameter. Rather, they must look for the schain parameter at bidRequest.schain.
- The bidRequest page referrer must checked in addition to any bidder-specific parameter.
- If they're getting the COPPA flag, it must come from config.getConfig('coppa');

- After a new adapter is approved, let the submitter know they may open a PR in the [headerbid-expert repository](https://github.com/prebid/headerbid-expert) to have their adapter recognized by the [Headerbid Expert extension](https://chrome.google.com/webstore/detail/headerbid-expert/cgfkddgbnfplidghapbbnngaogeldmop). The PR should be to the [bidder patterns file](https://github.com/prebid/headerbid-expert/blob/master/bidderPatterns.js), adding an entry with their adapter's name and the url the adapter uses to send and receive bid responses.

## Ticket Coordinator
Expand Down
6 changes: 2 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -268,17 +268,15 @@ As you make code changes, the bundles will be rebuilt and the page reloaded auto

## Contribute

Many SSPs, bidders, and publishers have contributed to this project. [60+ Bidders](https://github.com/prebid/Prebid.js/tree/master/src/adapters) are supported by Prebid.js.
Many SSPs, bidders, and publishers have contributed to this project. [Hundreds of bidders](https://github.com/prebid/Prebid.js/tree/master/src/adapters) are supported by Prebid.js.

For guidelines, see [Contributing](./CONTRIBUTING.md).

Our PR review process can be found [here](https://github.com/prebid/Prebid.js/tree/master/PR_REVIEW.md).

### Add a Bidder Adapter

To add a bidder adapter module, see the instructions in [How to add a bidder adaptor](http://prebid.org/dev-docs/bidder-adaptor.html).

Please **do NOT load Prebid.js inside your adapter**. If you do this, we will reject or remove your adapter as appropriate.
To add a bidder adapter module, see the instructions in [How to add a bidder adapter](https://docs.prebid.org/dev-docs/bidder-adaptor.html).

### Code Quality

Expand Down
98 changes: 98 additions & 0 deletions integrationExamples/gpt/jwplayerRtdProvider_example.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
<!DOCTYPE html>
<html lang="en">
<head>
<script async src="../../build/dev/prebid.js"></script>
<script async src="https://www.googletagservices.com/tag/js/gpt.js"></script>
<meta charset="UTF-8">
<title>JW Player RTD Provider Example</title>
<script>
var FAILSAFE_TIMEOUT = 3300;
var PREBID_TIMEOUT = 1000;

var adUnits = [{
code: 'div-gpt-ad-1460505748561-0',
jwTargeting: {
playerID: '123',
mediaID: 'abc'
},
mediaTypes: {
banner: {
sizes: [[300, 250], [300,600]],
}
},
// Replace this object to test a new Adapter!
bids: [{
bidder: 'appnexus',
params: {
placementId: 13144370
}
}]

}];

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.setConfig({
realTimeData: {
dataProviders: [{
name: "jwplayer",
params: {
mediaIDs: ['abc', 'def', 'ghi', 'jkl']
}
}]
}
});
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-gpt-ad-1460505748561-0').addService(googletag.pubads());

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

<body>
<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>
6 changes: 4 additions & 2 deletions modules/.submodules.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,15 @@
"criteoIdSystem",
"netIdSystem",
"identityLinkIdSystem",
"sharedIdSystem"
"sharedIdSystem",
"intentIqIdSystem"
],
"adpod": [
"freeWheelAdserverVideo",
"dfpAdServerVideo"
],
"rtdModule": [
"browsiRtdProvider"
"browsiRtdProvider",
"jwplayerRtdProvider"
]
}
2 changes: 1 addition & 1 deletion modules/adbutlerBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ const BIDDER_CODE = 'adbutler';
export const spec = {
code: BIDDER_CODE,
pageID: Math.floor(Math.random() * 10e6),
aliases: ['divreach'],
aliases: ['divreach', 'doceree'],

isBidRequestValid: function (bid) {
return !!(bid.params.accountID && bid.params.zoneID);
Expand Down
17 changes: 11 additions & 6 deletions modules/adheseBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@ import { registerBidder } from '../src/adapters/bidderFactory.js';
import { BANNER, VIDEO } from '../src/mediaTypes.js';

const BIDDER_CODE = 'adhese';
const GVLID = 553;
const USER_SYNC_BASE_URL = 'https://user-sync.adhese.com/iframe/user_sync.html';

export const spec = {
code: BIDDER_CODE,
gvlid: GVLID,
supportedMediaTypes: [BANNER, VIDEO],

isBidRequestValid: function(bid) {
Expand Down Expand Up @@ -112,12 +114,15 @@ function mergeTargets(targets, target) {
if (target) {
Object.keys(target).forEach(function (key) {
const val = target[key];
const values = Array.isArray(val) ? val : [val];
if (targets[key]) {
const distinctValues = values.filter(v => targets[key].indexOf(v) < 0);
targets[key].push.apply(targets[key], distinctValues);
} else {
targets[key] = values;
const dirtyValues = Array.isArray(val) ? val : [val];
const values = dirtyValues.filter(v => v === 0 || v);
if (values.length > 0) {
if (targets[key]) {
const distinctValues = values.filter(v => targets[key].indexOf(v) < 0);
targets[key].push.apply(targets[key], distinctValues);
} else {
targets[key] = values;
}
}
});
}
Expand Down
3 changes: 2 additions & 1 deletion modules/appnexusAnalyticsAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ var appnexusAdapter = adapter({

adapterManager.registerAnalyticsAdapter({
adapter: appnexusAdapter,
code: 'appnexus'
code: 'appnexus',
gvlid: 32
});

export default appnexusAdapter;
89 changes: 89 additions & 0 deletions modules/brightMountainMediaBidAdapter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
import { registerBidder } from '../src/adapters/bidderFactory.js';
import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
import * as utils from '../src/utils.js';

const BIDDER_CODE = 'brightmountainmedia';
const AD_URL = 'https://console.brightmountainmedia.com/hb/bid';

export const spec = {
code: BIDDER_CODE,
supportedMediaTypes: [BANNER, VIDEO, NATIVE],

isBidRequestValid: (bid) => {
return Boolean(bid.bidId && bid.params && bid.params.placement_id);
},

buildRequests: (validBidRequests, bidderRequest) => {
let winTop = window;
let location;
try {
location = new URL(bidderRequest.refererInfo.referer)
winTop = window.top;
} catch (e) {
location = winTop.location;
utils.logMessage(e);
};
let placements = [];
let request = {
'deviceWidth': winTop.screen.width,
'deviceHeight': winTop.screen.height,
'language': (navigator && navigator.language) ? navigator.language : '',
'secure': 1,
'host': location.host,
'page': location.pathname,
'placements': placements
};
if (bidderRequest) {
if (bidderRequest.gdprConsent) {
request.gdpr_consent = bidderRequest.gdprConsent.consentString || 'ALL'
request.gdpr_require = bidderRequest.gdprConsent.gdprApplies ? 1 : 0
}
}
for (let i = 0; i < validBidRequests.length; i++) {
let bid = validBidRequests[i];
let traff = bid.params.traffic || BANNER
let placement = {
placementId: bid.params.placement_id,
bidId: bid.bidId,
sizes: bid.mediaTypes[traff].sizes,
traffic: traff
};
if (bid.schain) {
placement.schain = bid.schain;
}
placements.push(placement);
}
return {
method: 'POST',
url: AD_URL,
data: request
};
},

interpretResponse: (serverResponse) => {
let response = [];
try {
serverResponse = serverResponse.body;
for (let i = 0; i < serverResponse.length; i++) {
let resItem = serverResponse[i];

response.push(resItem);
}
} catch (e) {
utils.logMessage(e);
};
return response;
},

getUserSyncs: (syncOptions) => {
if (syncOptions.iframeEnabled) {
return [{
type: 'iframe',
url: 'https://console.brightmountainmedia.com:4444/cookieSync'
}];
}
},

};

registerBidder(spec);
34 changes: 34 additions & 0 deletions modules/brightMountainMediaBidAdapter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Overview

```
Module Name: Bright Mountain Media Bidder Adapter
Module Type: Bidder Adapter
Maintainer: dev@brightmountainmedia.com
```

# Description

Connects to Bright Mountain Media exchange for bids.

Bright Mountain Media bid adapter currently supports Banner.

# Test Parameters
```
var adUnits = [
code: 'placementid_0',
mediaTypes: {
banner: {
sizes: [[300, 250]]
}
},
bids: [
{
bidder: 'brightmountainmedia',
params: {
placement_id: '5f21784949be82079d08c',
traffic: 'banner'
}
}
]
];
```
Loading