Skip to content

Commit 2b81856

Browse files
author
Jaimin Panchal
committed
updated getting iab subcategory code
1 parent 37391e4 commit 2b81856

File tree

3 files changed

+45
-28
lines changed

3 files changed

+45
-28
lines changed

modules/appnexusBidAdapter.js

+20-9
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Renderer } from '../src/Renderer';
22
import * as utils from '../src/utils';
3-
import { registerBidder } from '../src/adapters/bidderFactory';
4-
import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes';
3+
import { registerBidder, getIabSubCategory } from '../src/adapters/bidderFactory';
4+
import { BANNER, NATIVE, VIDEO, ADPOD } from '../src/mediaTypes';
55
import find from 'core-js/library/fn/array/find';
66
import includes from 'core-js/library/fn/array/includes';
77

@@ -32,10 +32,7 @@ const NATIVE_MAPPING = {
3232
displayUrl: 'displayurl'
3333
};
3434
const SOURCE = 'pbjs';
35-
const mappingFileInfo = Object.freeze({
36-
mappingFileUrl: 'http://sample.com/mappnig.json',
37-
uniqueKey: utils.getUniqueIdentifierStr()
38-
});
35+
const mappingFileUrl = 'https://api.myjson.com/bins/11f7yo';
3936

4037
export const spec = {
4138
code: BIDDER_CODE,
@@ -226,9 +223,8 @@ export const spec = {
226223
*/
227224
getMappingFileInfo: function() {
228225
return {
229-
url: mappingFileInfo.mappingFileUrl,
230-
refreshInDays: 7,
231-
localStorageKey: `${spec.code}_${mappingFileInfo.uniqueKey}`
226+
url: mappingFileUrl,
227+
refreshInDays: 7
232228
}
233229
},
234230

@@ -339,6 +335,21 @@ function newBid(serverBid, rtbBid, bidderRequest) {
339335
vastImpUrl: rtbBid.notify_url,
340336
ttl: 3600
341337
});
338+
339+
const videoContext = utils.deepAccess(bidRequest, 'mediaTypes.video.context');
340+
if (videoContext === ADPOD) {
341+
const iabSubCatId = getIabSubCategory(bidRequest.bidder, rtbBid.brand_category_id);
342+
343+
bid.meta = {
344+
iabSubCatId
345+
};
346+
347+
bid.video = {
348+
context: ADPOD,
349+
durationSeconds: Math.ceil(rtbBid.rtb.video.duration_ms / 1000),
350+
};
351+
}
352+
342353
// This supports Outstream Video
343354
if (rtbBid.renderer_url) {
344355
const rendererOptions = utils.deepAccess(

src/adapters/bidderFactory.js

+25-2
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,8 @@ export function preloadBidderMappingFile(fn, adUnits) {
358358
let bidderSpec = adapterManager.getBidAdapter(bidder);
359359
if (bidderSpec.getSpec().getMappingFileInfo) {
360360
let info = bidderSpec.getSpec().getMappingFileInfo();
361-
let mappingData = getDataFromLocalStorage(info.localStorageKey);
361+
let key = (info.localStorageKey) ? info.localStorageKey : bidderSpec.getSpec().code;
362+
let mappingData = getDataFromLocalStorage(key);
362363
if (!mappingData || timestamp() < mappingData.lastUpdated + info.refreshInDays * 24 * 60 * 60 * 1000) {
363364
ajax(info.url,
364365
{
@@ -369,7 +370,7 @@ export function preloadBidderMappingFile(fn, adUnits) {
369370
lastUpdated: timestamp(),
370371
mapping: response.mapping
371372
}
372-
setDataInLocalStorage(info.localStorageKey, JSON.stringify(mapping));
373+
setDataInLocalStorage(key, JSON.stringify(mapping));
373374
} catch (error) {
374375
logError(`Failed to parse ${bidder} bidder translation mapping file`);
375376
}
@@ -385,6 +386,28 @@ export function preloadBidderMappingFile(fn, adUnits) {
385386
fn.call(this, adUnits);
386387
}
387388

389+
/**
390+
* Reads the data stored in localstorage and returns iab subcategory
391+
* @param {string} bidderCode bidderCode
392+
* @param {string} category bidders category
393+
*/
394+
export function getIabSubCategory(bidderCode, category) {
395+
let bidderSpec = adapterManager.getBidAdapter(bidderCode);
396+
if (bidderSpec.getSpec().getMappingFileInfo) {
397+
let info = bidderSpec.getSpec().getMappingFileInfo();
398+
let key = (info.localStorageKey) ? info.localStorageKey : bidderSpec.getBidderCode();
399+
let data = getDataFromLocalStorage(key);
400+
if (data) {
401+
try {
402+
data = JSON.parse(data);
403+
} catch (error) {
404+
logError(`Failed to parse ${bidderCode} mapping data stored in local storage`);
405+
}
406+
return (data.mapping[category]) ? data.mapping[category] : null;
407+
}
408+
}
409+
}
410+
388411
// check that the bid has a width and height set
389412
function validBidSize(adUnitCode, bid, bidRequests) {
390413
if ((bid.width || bid.width === 0) && (bid.height || bid.height === 0)) {

src/utils.js

-17
Original file line numberDiff line numberDiff line change
@@ -1203,23 +1203,6 @@ export function hasLocalStorage() {
12031203
return !!window.localStorage;
12041204
}
12051205

1206-
/**
1207-
* Reads the data stored in localstorage and returns iab subcategory
1208-
* @param {string} localStorageKey key to get data from local storage
1209-
* @param {string} category bidders category
1210-
*/
1211-
export function getIabSubCategory(localStorageKey, category) {
1212-
let data = getDataFromLocalStorage(localStorageKey);
1213-
if (data) {
1214-
try {
1215-
data = JSON.parse(data);
1216-
} catch (error) {
1217-
logError(`Failed to parse translation data stored in local storage`);
1218-
}
1219-
return (data.mapping[category]) ? data.mapping[category] : null;
1220-
}
1221-
}
1222-
12231206
export function isArrayOfNums(val, size) {
12241207
return (isArray(val)) && ((size) ? val.length === size : true) && (val.every(v => isInteger(v)));
12251208
}

0 commit comments

Comments
 (0)