diff --git a/.github/workflows/issue_tracker.yml b/.github/workflows/issue_tracker.yml index 05d08b2b0d7..35c6db80c26 100644 --- a/.github/workflows/issue_tracker.yml +++ b/.github/workflows/issue_tracker.yml @@ -14,7 +14,7 @@ jobs: steps: - name: Generate token id: generate_token - uses: tibdex/github-app-token@f717b5ecd4534d3c4df4ce9b5c1c2214f0f7cd06 + uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92 with: app_id: ${{ secrets.ISSUE_APP_ID }} private_key: ${{ secrets.ISSUE_APP_PEM }} diff --git a/modules/pixfutureBidAdapter.js b/modules/pixfutureBidAdapter.js index 4c4935e93a4..41b1151e72a 100644 --- a/modules/pixfutureBidAdapter.js +++ b/modules/pixfutureBidAdapter.js @@ -1,8 +1,8 @@ -import {registerBidder} from '../src/adapters/bidderFactory.js'; -import {getStorageManager} from '../src/storageManager.js'; -import {BANNER} from '../src/mediaTypes.js'; -import {config} from '../src/config.js'; -import {find, includes} from '../src/polyfill.js'; +import { registerBidder } from '../src/adapters/bidderFactory.js'; +import { getStorageManager } from '../src/storageManager.js'; +import { BANNER } from '../src/mediaTypes.js'; +import { config } from '../src/config.js'; +import { find, includes } from '../src/polyfill.js'; import { convertCamelToUnderscore, deepAccess, @@ -13,14 +13,17 @@ import { isPlainObject, transformBidderParamKeywords } from '../src/utils.js'; -import {auctionManager} from '../src/auctionManager.js'; -import {hasPurpose1Consent} from '../src/utils/gpdr.js'; +import { auctionManager } from '../src/auctionManager.js'; const SOURCE = 'pbjs'; const storageManager = getStorageManager({bidderCode: 'pixfuture'}); const USER_PARAMS = ['age', 'externalUid', 'segments', 'gender', 'dnt', 'language']; +let pixID = ''; +const GVLID = 839; + export const spec = { code: 'pixfuture', + gvlid: GVLID, hostname: 'https://gosrv.pixfuture.com', getHostname() { @@ -41,6 +44,10 @@ export const spec = { const tags = validBidRequests.map(bidToTag); const hostname = this.getHostname(); return validBidRequests.map((bidRequest) => { + if (bidRequest.params.pix_id) { + pixID = bidRequest.params.pix_id + } + let referer = ''; if (bidderRequest && bidderRequest.refererInfo) { referer = bidderRequest.refererInfo.page || ''; @@ -123,7 +130,7 @@ export const spec = { const ret = { url: `${hostname}/pixservices`, method: 'POST', - options: {withCredentials: false}, + options: {withCredentials: true}, data: { v: $$PREBID_GLOBAL$$.version, pageUrl: referer, @@ -162,15 +169,39 @@ export const spec = { return bids; }, - getUserSyncs: function (syncOptions, bid, gdprConsent) { - var pixid = ''; - if (typeof bid[0] === 'undefined' || bid[0] === null) { pixid = '0'; } else { pixid = bid[0].body.pix_id; } - if (syncOptions.iframeEnabled && hasPurpose1Consent(gdprConsent)) { - return [{ + getUserSyncs: function (syncOptions, bid, gdprConsent, uspConsent) { + const syncs = []; + + let syncurl = 'pixid=' + pixID; + let gdpr = (gdprConsent && gdprConsent.gdprApplies) ? 1 : 0; + let consent = gdprConsent ? encodeURIComponent(gdprConsent.consentString || '') : ''; + + // Attaching GDPR Consent Params in UserSync url + syncurl += '&gdprconcent=' + gdpr + '&adsync=' + consent; + + // CCPA + if (uspConsent) { + syncurl += '&us_privacy=' + encodeURIComponent(uspConsent); + } + + // coppa compliance + if (config.getConfig('coppa') === true) { + syncurl += '&coppa=1'; + } + + if (syncOptions.iframeEnabled) { + syncs.push({ type: 'iframe', - url: 'https://gosrv.pixfuture.com/cookiesync?adsync=' + gdprConsent.consentString + '&pixid=' + pixid + '&gdprconcent=' + gdprConsent.gdprApplies - }]; + url: 'https://gosrv.pixfuture.com/cookiesync?f=b&' + syncurl + }); + } else { + syncs.push({ + type: 'image', + url: 'https://gosrv.pixfuture.com/cookiesync?f=i&' + syncurl + }); } + + return syncs; } };