Skip to content

Commit

Permalink
Update Adikteev adapter (PR updated) (#3391)
Browse files Browse the repository at this point in the history
Update Adikteev adapter (PR updated)
  • Loading branch information
piotr-yuxuan authored and mike-chowla committed Mar 24, 2019
1 parent eba2ab5 commit 033e76b
Show file tree
Hide file tree
Showing 7 changed files with 576 additions and 347 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,10 @@
}
},
bids: [{
bidder: 'adikteev',
params: {
placementId: 13144370,
stagingEnvironment: true,
bidFloorPrice: 0.1,
}
bidder: 'emoteev',
params: {
adSpaceId: 5084,
}
}]
}];

Expand Down
8 changes: 3 additions & 5 deletions integrationExamples/gpt/pbjs_example_gpt.html
Original file line number Diff line number Diff line change
Expand Up @@ -314,12 +314,10 @@
height: '250',
}
},
{
bidder: 'adikteev',
{
bidder: 'emoteev',
params: {
placementId: 12345,
currency: 'EUR',
bidFloorPrice: 0.1,
adSpaceId: 5084,
}
},
]
Expand Down
94 changes: 0 additions & 94 deletions modules/adikteevBidAdapter.js

This file was deleted.

13 changes: 6 additions & 7 deletions modules/adikteevBidAdapter.md → modules/emokteevBidAdapter.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
# Overview

```
Module Name: Adikteev Bidder Adapter
Module Name: Emoteev Bidder Adapter
Module Type: Bidder Adapter
Maintainer: adnetwork@adikteev.com
Maintainer: engineering@emoteev.io
```

# Description

Module that connects to Adikteev's demand sources
Module that connects to Emoteev's demand sources

# Test Parameters

Expand All @@ -18,15 +18,14 @@ Module that connects to Adikteev's demand sources
code: 'test-div',
mediaTypes: {
banner: {
sizes: [[750, 200]], // a display size
sizes: [[300, 250]],
}
},
bids: [
{
bidder: 'adikteev',
bidder: 'emoteev',
params: {
placementId: 12345,
bidFloorPrice: 0.1,
adSpaceId: 5084
}
}
]
Expand Down
214 changes: 214 additions & 0 deletions modules/emoteevBidAdapter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,214 @@
import {registerBidder} from '../src/adapters/bidderFactory';
import {BANNER} from '../src/mediaTypes';
import * as utils from '../src/utils';
import {config} from '../src/config';

export const BIDDER_CODE = 'emoteev';
export const AK_PBJS_VERSION = '1.35.0';

export const EMOTEEV_BASE_URL = 'https://prebid.emoteev.io';
export const EMOTEEV_BASE_URL_STAGING = 'https://prebid-staging.emoteev.io';
export const EMOTEEV_BASE_URL_DEVELOPMENT = 'http://localhost:3000';

export const ENDPOINT_PATH = '/api/prebid/bid';
export const USER_SYNC_IFRAME_URL_PATH = '/api/prebid/sync-iframe';
export const USER_SYNC_IMAGE_URL_PATH = '/api/prebid/sync-image';

export const PRODUCTION = 'production';
export const STAGING = 'staging';
export const DEVELOPMENT = 'development';
export const DEFAULT_ENV = PRODUCTION;

export const conformBidRequest = bidRequest => {
return {
params: bidRequest.params,
crumbs: bidRequest.crumbs,
sizes: bidRequest.sizes,
bidId: bidRequest.bidId,
bidderRequestId: bidRequest.bidderRequestId,
};
};

export const emoteevDebug = (parameterDebug, configDebug) => {
if (parameterDebug && parameterDebug.length && parameterDebug.length > 0) return JSON.parse(parameterDebug);
else if (configDebug) return configDebug;
else return false;
};

export const emoteevEnv = (parameteremoteevEnv, configemoteevEnv) => {
if (utils.contains([PRODUCTION, STAGING, DEVELOPMENT], parameteremoteevEnv)) return parameteremoteevEnv;
else if (utils.contains([PRODUCTION, STAGING, DEVELOPMENT], configemoteevEnv)) return configemoteevEnv;
else return DEFAULT_ENV;
};

export const emoteevOverrides = (parameteremoteevOverrides, configemoteevOverrides) => {
if (parameteremoteevOverrides && parameteremoteevOverrides.length !== 0) {
let parsedParams = null;
try {
parsedParams = JSON.parse(parameteremoteevOverrides);
} catch (error) {
parsedParams = null;
}
if (parsedParams) return parsedParams;
}
if (configemoteevOverrides && Object.keys(configemoteevOverrides).length !== 0) return configemoteevOverrides;
else return {};
};

export const akUrl = (environment) => {
switch (environment) {
case DEVELOPMENT:
return EMOTEEV_BASE_URL_DEVELOPMENT;
case STAGING:
return EMOTEEV_BASE_URL_STAGING;
default:
return EMOTEEV_BASE_URL;
}
};

export const endpointUrl = (parameteremoteevEnv, configemoteevEnv) => akUrl(emoteevEnv(parameteremoteevEnv, configemoteevEnv)).concat(ENDPOINT_PATH);
export const userSyncIframeUrl = (parameteremoteevEnv, configemoteevEnv) => akUrl(emoteevEnv(parameteremoteevEnv, configemoteevEnv)).concat(USER_SYNC_IFRAME_URL_PATH);
export const userSyncImageUrl = (parameteremoteevEnv, configemoteevEnv) => akUrl(emoteevEnv(parameteremoteevEnv, configemoteevEnv)).concat(USER_SYNC_IMAGE_URL_PATH);

export const getViewDimensions = () => {
let w = window;
let prefix = 'inner';

if (window.innerWidth === undefined || window.innerWidth === null) {
w = document.documentElement || document.body;
prefix = 'client';
}

return {
width: w[`${prefix}Width`],
height: w[`${prefix}Height`],
};
};

export const getDeviceDimensions = () => {
return {
width: window.screen ? window.screen.width : '',
height: window.screen ? window.screen.height : '',
};
};

export const getDocumentDimensions = () => {
const de = document.documentElement;
const be = document.body;

const bodyHeight = be ? Math.max(be.offsetHeight, be.scrollHeight) : 0;

const w = Math.max(de.clientWidth, de.offsetWidth, de.scrollWidth);
const h = Math.max(
de.clientHeight,
de.offsetHeight,
de.scrollHeight,
bodyHeight
);

return {
width: isNaN(w) ? '' : w,
height: isNaN(h) ? '' : h,
};
};

export const isWebGLEnabled = () => {
// Create test canvas
let canvas = document.createElement('canvas');

// The gl context
let gl = null;

// Try to get the regular WebGL
try {
gl = canvas.getContext('webgl');
} catch (ex) {
canvas = undefined;
return false;
}

// No regular WebGL found
if (!gl) {
// Try experimental WebGL
try {
gl = canvas.getContext('experimental-webgl');
} catch (ex) {
canvas = undefined;
return false;
}
}

return !!gl;
};

export const getDeviceInfo = (deviceDimensions, viewDimensions, documentDimensions, webGL) => {
return {
browserWidth: viewDimensions.width,
browserHeight: viewDimensions.height,
deviceWidth: deviceDimensions.width,
deviceHeight: deviceDimensions.height,
documentWidth: documentDimensions.width,
documentHeight: documentDimensions.height,
webGL: webGL,
};
};

const validateSizes = sizes => utils.isArray(sizes) && sizes.some(size => utils.isArray(size) && size.length === 2);

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

isBidRequestValid: (bid) => {
return !!(
bid &&
bid.params &&
bid.params.adSpaceId &&
bid.bidder === BIDDER_CODE &&
validateSizes(bid.mediaTypes.banner.sizes)
);
},

buildRequests: (validBidRequests, bidderRequest) => {
const payload = Object.assign({},
{
akPbjsVersion: AK_PBJS_VERSION,
bidRequests: validBidRequests.map(conformBidRequest),
currency: config.getConfig('currency'),
debug: emoteevDebug(utils.getParameterByName('emoteevDebug'), config.getConfig('emoteev.debug')),
language: navigator.language,
refererInfo: bidderRequest.refererInfo,
deviceInfo: getDeviceInfo(getDeviceDimensions(), getViewDimensions(), getDocumentDimensions(), isWebGLEnabled()),
userAgent: navigator.userAgent,
},
emoteevOverrides(utils.getParameterByName('emoteevOverrides'), config.getConfig('emoteev.overrides')));

return {
method: 'POST',
url: endpointUrl(utils.getParameterByName('emoteevEnv'), config.getConfig('emoteev.env')),
data: JSON.stringify(payload),
};
},

interpretResponse: (serverResponse) => serverResponse.body,

getUserSyncs: (syncOptions, serverResponses) => {
const parameteremoteevEnv = utils.getParameterByName('emoteev.env');
const configemoteevEnv = config.getConfig('emoteev.env');
const syncs = [];
if (syncOptions.iframeEnabled) {
syncs.push({
type: 'iframe',
url: userSyncIframeUrl(parameteremoteevEnv, configemoteevEnv),
});
}
if (syncOptions.pixelEnabled && serverResponses.length > 0) {
syncs.push({
type: 'image',
url: userSyncImageUrl(parameteremoteevEnv, configemoteevEnv),
});
}
return syncs;
},
};
registerBidder(spec);
Loading

0 comments on commit 033e76b

Please sign in to comment.