Skip to content

Commit

Permalink
Submitting EMX Digital Adapter (#3173)
Browse files Browse the repository at this point in the history
* Submitting EMX Digital Prebid Adapter

Submitting EMX Digital Prebid Adapter code

* fixing lint errors. updating our md

* updating to const/let variables. adding test spec.

* fixed linting on test spec js
  • Loading branch information
EMXDigital authored and jaiminpanchal27 committed Oct 24, 2018
1 parent bd3cb66 commit 5e27370
Show file tree
Hide file tree
Showing 3 changed files with 484 additions and 0 deletions.
108 changes: 108 additions & 0 deletions modules/emx_digitalBidAdapter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
import * as utils from 'src/utils';
import {
registerBidder
} from 'src/adapters/bidderFactory';
import {
BANNER
} from 'src/mediaTypes';
import {
config
} from 'src/config';

const BIDDER_CODE = 'emx_digital';
const ENDPOINT = 'hb.emxdgt.com';
export const spec = {
code: BIDDER_CODE,
supportedMediaTypes: [BANNER],
isBidRequestValid: function (bid) {
return !!(bid.params.tagid);
},
buildRequests: function (validBidRequests, bidRequests) {
const {host, href, protocol} = utils.getTopWindowLocation();
let emxData = {};
let emxImps = [];
const auctionId = bidRequests.auctionId;
const timeout = config.getConfig('bidderTimeout');
const timestamp = Date.now();
const url = location.protocol + '//' + ENDPOINT + ('?t=' + timeout + '&ts=' + timestamp);

utils._each(validBidRequests, function (bid) {
let tagId = String(utils.getBidIdParameter('tagid', bid.params));
let bidFloor = utils.getBidIdParameter('bidfloor', bid.params) || 0;
let emxBid = {
id: bid.bidId,
tid: bid.transactionId,
tagid: tagId,
secure: protocol === 'https:' ? 1 : 0,
banner: {
format: bid.sizes.map(function (size) {
return {
w: size[0],
h: size[1]
};
}),
w: bid.sizes[0][0],
h: bid.sizes[0][1]
}
}
if (bidFloor > 0) {
emxBid.bidfloor = bidFloor
}
emxImps.push(emxBid);
});
emxData = {
id: auctionId,
imp: emxImps,
site: {
domain: host,
page: href
}
};
if (bidRequests.gdprConsent) {
emxData.regs = {
ext: {
gdpr: bidRequests.gdprConsent.gdprApplies === true ? 1 : 0
}
};
}
if (bidRequests.gdprConsent && bidRequests.gdprConsent.gdprApplies) {
emxData.user = {
ext: {
consent: bidRequests.gdprConsent.consentString
}
};
}
return {
method: 'POST',
url: url,
data: JSON.stringify(emxData),
options: {
withCredentials: true
}
};
},
interpretResponse: function (serverResponse) {
let emxBidResponses = [];
let response = serverResponse.body || {};
if (response.seatbid && response.seatbid.length > 0 && response.seatbid[0].bid) {
response.seatbid.forEach(function (emxBid) {
emxBid = emxBid.bid[0];
emxBidResponses.push({
requestId: emxBid.id,
cpm: emxBid.price,
width: emxBid.w,
height: emxBid.h,
creativeId: emxBid.crid || emxBid.id,
dealId: emxBid.dealid || null,
currency: 'USD',
netRevenue: true,
mediaType: BANNER,
ad: decodeURIComponent(emxBid.adm),
ttl: emxBid.ttl
});
});
}
return emxBidResponses;
}
};
registerBidder(spec);
38 changes: 38 additions & 0 deletions modules/emx_digitalBidAdapter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Overview

```
Module Name: EMX Digital Adapter
Module Type: Bidder Adapter
Maintainer: git@emxdigital.com
```

# Description

The EMX Digital adapter provides publishers with access to the EMX Marketplace. The adapter is GDPR compliant. Please note that the adapter supports Banner media type only.

Note: The EMX Digital adapter requires approval and implementation guidelines from the EMX team, including existing publishers that work with EMX Digital. Please reach out to your account manager or prebid@emxdigital.com for more information.

The bidder code should be ```emx_digital```
The params used by the bidder are :
```tagid``` - string (mandatory)
```bidfloor``` - string (optional)

# Test Parameters
```
var adUnits = [{
code: 'banner-div',
mediaTypes: {
banner: {
sizes: [
[300, 250], [300, 600]
}
},
bids: [
{
bidder: 'emx_digital',
params: {
tagid: '25251',
}
}]
}];
```
Loading

0 comments on commit 5e27370

Please sign in to comment.