Skip to content

saambaaBidAdapter.js: make alias of advangelist #11992

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

Merged
merged 32 commits into from
Aug 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
6eb3fd6
saambaaBidAdapter.js: reuse repeated code block
patmmccann Jul 17, 2024
64905ea
Update saambaaBidAdapter.js
patmmccann Jul 17, 2024
e3e7ef3
Update advangelistsBidAdapter.js
patmmccann Jul 17, 2024
a677583
Update saambaaBidAdapter.js
patmmccann Jul 17, 2024
6af4520
Update advangelistsBidAdapter.js
patmmccann Jul 17, 2024
5839ee7
Update saambaaBidAdapter.js
patmmccann Jul 17, 2024
f2f0eca
Update advangelistsBidAdapter.js
patmmccann Jul 17, 2024
9ef6e63
Create index.js
patmmccann Jul 17, 2024
7e38482
Update saambaaBidAdapter.js
patmmccann Jul 17, 2024
7859c94
Update advangelistsBidAdapter.js
patmmccann Jul 17, 2024
4d012bb
Update index.js
patmmccann Jul 17, 2024
6625791
Update advangelistsBidAdapter.js
patmmccann Jul 17, 2024
9196c77
Update saambaaBidAdapter.js
patmmccann Jul 17, 2024
e60ffbe
Update index.js
patmmccann Jul 17, 2024
1fe79d3
Update advangelistsBidAdapter.js
patmmccann Jul 17, 2024
739bcfb
Update saambaaBidAdapter.js
patmmccann Jul 17, 2024
e415603
Update index.js
patmmccann Jul 17, 2024
61d8b60
Update advangelistsBidAdapter.js
patmmccann Jul 17, 2024
cb41cef
Update saambaaBidAdapter.js
patmmccann Jul 17, 2024
5f9430b
Update advangelistsBidAdapter.js
patmmccann Jul 17, 2024
9d5e6dc
Delete modules/saambaaBidAdapter.js
patmmccann Jul 17, 2024
1b8dce1
Update advangelistsBidAdapter.js
patmmccann Jul 17, 2024
5f1c306
Update beachfrontBidAdapter.js
patmmccann Jul 17, 2024
b1381f6
Update beachfrontBidAdapter.js
patmmccann Jul 17, 2024
38d4c39
Update beachfrontBidAdapter.js
patmmccann Jul 17, 2024
b4f5e6a
Update nextrollBidAdapter.js
patmmccann Jul 17, 2024
76e29f6
Update beachfrontBidAdapter.js
patmmccann Jul 17, 2024
22d83c8
Update index.js
patmmccann Jul 17, 2024
da41261
Update advangelistsBidAdapter.js
patmmccann Jul 17, 2024
e3c1c30
Update beachfrontBidAdapter.js
patmmccann Jul 17, 2024
21cdfe8
Create saambaaBidAdapter.js
patmmccann Jul 17, 2024
cfe8126
fix file name
ChrisHuie Aug 6, 2024
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
228 changes: 228 additions & 0 deletions libraries/advangUtils/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,228 @@
import { deepAccess, generateUUID, isFn, parseSizesInput, parseUrl } from '../../src/utils.js';
import { config } from '../../src/config.js';
import { find, includes } from '../../src/polyfill.js';

export const DEFAULT_MIMES = ['video/mp4', 'application/javascript'];

export function isBannerBid(bid) {
return deepAccess(bid, 'mediaTypes.banner') || !isVideoBid(bid);
}

export function isVideoBid(bid) {
return deepAccess(bid, 'mediaTypes.video');
}

export function getBannerBidFloor(bid) {
let floorInfo = isFn(bid.getFloor) ? bid.getFloor({ currency: 'USD', mediaType: 'banner', size: '*' }) : {};
return floorInfo.floor || getBannerBidParam(bid, 'bidfloor');
}

export function getVideoBidFloor(bid) {
let floorInfo = isFn(bid.getFloor) ? bid.getFloor({ currency: 'USD', mediaType: 'video', size: '*' }) : {};
return floorInfo.floor || getVideoBidParam(bid, 'bidfloor');
}

export function isVideoBidValid(bid) {
return isVideoBid(bid) && getVideoBidParam(bid, 'pubid') && getVideoBidParam(bid, 'placement');
}

export function isBannerBidValid(bid) {
return isBannerBid(bid) && getBannerBidParam(bid, 'pubid') && getBannerBidParam(bid, 'placement');
}

export function getVideoBidParam(bid, key) {
return deepAccess(bid, 'params.video.' + key) || deepAccess(bid, 'params.' + key);
}

export function getBannerBidParam(bid, key) {
return deepAccess(bid, 'params.banner.' + key) || deepAccess(bid, 'params.' + key);
}

export function isMobile() {
return (/(ios|ipod|ipad|iphone|android)/i).test(navigator.userAgent);
}

export function isConnectedTV() {
return (/(smart[-]?tv|hbbtv|appletv|googletv|hdmi|netcast\.tv|viera|nettv|roku|\bdtv\b|sonydtv|inettvbrowser|\btv\b)/i).test(navigator.userAgent);
}

export function getDoNotTrack() {
return navigator.doNotTrack === '1' || window.doNotTrack === '1' || navigator.msDoNoTrack === '1' || navigator.doNotTrack === 'yes';
}

export function findAndFillParam(o, key, value) {
try {
if (typeof value === 'function') {
o[key] = value();
} else {
o[key] = value;
}
} catch (ex) {}
}

export function getOsVersion() {
let clientStrings = [
{ s: 'Android', r: /Android/ },
{ s: 'iOS', r: /(iPhone|iPad|iPod)/ },
{ s: 'Mac OS X', r: /Mac OS X/ },
{ s: 'Mac OS', r: /(MacPPC|MacIntel|Mac_PowerPC|Macintosh)/ },
{ s: 'Linux', r: /(Linux|X11)/ },
{ s: 'Windows 10', r: /(Windows 10.0|Windows NT 10.0)/ },
{ s: 'Windows 8.1', r: /(Windows 8.1|Windows NT 6.3)/ },
{ s: 'Windows 8', r: /(Windows 8|Windows NT 6.2)/ },
{ s: 'Windows 7', r: /(Windows 7|Windows NT 6.1)/ },
{ s: 'Windows Vista', r: /Windows NT 6.0/ },
{ s: 'Windows Server 2003', r: /Windows NT 5.2/ },
{ s: 'Windows XP', r: /(Windows NT 5.1|Windows XP)/ },
{ s: 'UNIX', r: /UNIX/ },
{ s: 'Search Bot', r: /(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\/Teoma|ia_archiver)/ }
];
let cs = find(clientStrings, cs => cs.r.test(navigator.userAgent));
return cs ? cs.s : 'unknown';
}

export function getFirstSize(sizes) {
return (sizes && sizes.length) ? sizes[0] : { w: undefined, h: undefined };
}

export function parseSizes(sizes) {
return parseSizesInput(sizes).map(size => {
let [ width, height ] = size.split('x');
return {
w: parseInt(width, 10) || undefined,
h: parseInt(height, 10) || undefined
};
});
}

export function getVideoSizes(bid) {
return parseSizes(deepAccess(bid, 'mediaTypes.video.playerSize') || bid.sizes);
}

export function getBannerSizes(bid) {
return parseSizes(deepAccess(bid, 'mediaTypes.banner.sizes') || bid.sizes);
}

export function getTopWindowReferrer(bidderRequest) {
return bidderRequest?.refererInfo?.ref || '';
}

export function getTopWindowLocation(bidderRequest) {
return parseUrl(bidderRequest?.refererInfo?.page, {decodeSearchAsString: true});
}

export function getVideoTargetingParams(bid, VIDEO_TARGETING) {
const result = {};
const excludeProps = ['playerSize', 'context', 'w', 'h'];
Object.keys(Object(bid.mediaTypes.video))
.filter(key => !includes(excludeProps, key))
.forEach(key => {
result[ key ] = bid.mediaTypes.video[ key ];
});
Object.keys(Object(bid.params.video))
.filter(key => includes(VIDEO_TARGETING, key))
.forEach(key => {
result[ key ] = bid.params.video[ key ];
});
return result;
}

export function createRequestData(bid, bidderRequest, isVideo, getBidParam, getSizes, getBidFloor, BIDDER_CODE, ADAPTER_VERSION) {
let topLocation = getTopWindowLocation(bidderRequest);
let topReferrer = getTopWindowReferrer(bidderRequest);
let paramSize = getBidParam(bid, 'size');
let sizes = [];
let coppa = config.getConfig('coppa');

if (typeof paramSize !== 'undefined' && paramSize != '') {
sizes = parseSizes(paramSize);
} else {
sizes = getSizes(bid);
}

const firstSize = getFirstSize(sizes);
let floor = getBidFloor(bid) || (isVideo ? 0.5 : 0.1);
const o = {
'device': {
'langauge': (global.navigator.language).split('-')[0],
'dnt': (global.navigator.doNotTrack === 1 ? 1 : 0),
'devicetype': isMobile() ? 4 : isConnectedTV() ? 3 : 2,
'js': 1,
'os': getOsVersion()
},
'at': 2,
'site': {},
'tmax': Math.min(3000, bidderRequest.timeout),
'cur': ['USD'],
'id': bid.bidId,
'imp': [],
'regs': {
'ext': {}
},
'user': {
'ext': {}
}
};

o.site['page'] = topLocation.href;
o.site['domain'] = topLocation.hostname;
o.site['search'] = topLocation.search;
o.site['ref'] = topReferrer;
o.site['mobile'] = isMobile() ? 1 : 0;
const secure = topLocation.protocol.indexOf('https') === 0 ? 1 : 0;
o.device['dnt'] = getDoNotTrack() ? 1 : 0;

findAndFillParam(o.site, 'name', function() {
return global.top.document.title;
});

findAndFillParam(o.device, 'h', function() {
return global.screen.height;
});
findAndFillParam(o.device, 'w', function() {
return global.screen.width;
});

let placement = getBidParam(bid, 'placement');
let impType = isVideo ? {
'video': Object.assign({
'id': generateUUID(),
'pos': 0,
'w': firstSize.w,
'h': firstSize.h,
'mimes': DEFAULT_MIMES
}, getVideoTargetingParams(bid))
} : {
'banner': {
'id': generateUUID(),
'pos': 0,
'w': firstSize.w,
'h': firstSize.h
}
};

for (let j = 0; j < sizes.length; j++) {
o.imp.push({
'id': '' + j,
'displaymanager': '' + BIDDER_CODE,
'displaymanagerver': '' + ADAPTER_VERSION,
'tagId': placement,
'bidfloor': floor,
'bidfloorcur': 'USD',
'secure': secure,
...impType
});
}

if (coppa) {
o.regs.ext = {'coppa': 1};
}

if (bidderRequest && bidderRequest.gdprConsent) {
let { gdprApplies, consentString } = bidderRequest.gdprConsent;
o.regs.ext = {'gdpr': gdprApplies ? 1 : 0};
o.user.ext = {'consent': consentString};
}

return o;
}
Loading