From bdf282a5970065f6313c47c2d19257b33ac06cae Mon Sep 17 00:00:00 2001 From: Dave Bemiller Date: Tue, 24 Oct 2017 16:04:45 -0400 Subject: [PATCH 1/8] Added code which shows how to dig into the server response. --- dev-docs/bidder-adapter-1.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/dev-docs/bidder-adapter-1.md b/dev-docs/bidder-adapter-1.md index cdf15c1d8a..0fc813af04 100644 --- a/dev-docs/bidder-adapter-1.md +++ b/dev-docs/bidder-adapter-1.md @@ -233,6 +233,10 @@ The `interpretResponse` function will be called when the browser has received th // if the bid response was empty or an error, return [] // otherwise parse the response and return a bidReponses array + // The response body and headers can be retrieved like this: + // + // const serverBody = serverResponse.body; + // const headerValue = serverResponse.headers.get('some-response-header') const bidResponses = []; const bidResponse = { requestId: bidRequest.bidId, @@ -437,12 +441,13 @@ export const spec = { /** * Unpack the response from the server into a list of bids. * - * @param {*} serverResponse A successful response from the server. + * @param {ServerResponse} serverResponse A successful response from the server. * @return {Bid[]} An array of bids which were nested inside the server. */ interpretResponse: function(serverResponse, bidRequest) { + // const serverBody = serverResponse.body; + // const headerValue = serverResponse.headers.get('some-response-header') const bidResponses = []; - // loop through serverResponses { const bidResponse = { requestId: bidRequest.bidId, cpm: CPM, From 237b1402f42372513286388eae3effce417b1904 Mon Sep 17 00:00:00 2001 From: Dave Bemiller Date: Tue, 24 Oct 2017 17:00:46 -0400 Subject: [PATCH 2/8] Fixed typo. --- dev-docs/bidder-adapter-1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-docs/bidder-adapter-1.md b/dev-docs/bidder-adapter-1.md index 0fc813af04..cb68db1d51 100644 --- a/dev-docs/bidder-adapter-1.md +++ b/dev-docs/bidder-adapter-1.md @@ -231,7 +231,7 @@ The `interpretResponse` function will be called when the browser has received th {% highlight js %} // if the bid response was empty or an error, return [] - // otherwise parse the response and return a bidReponses array + // otherwise parse the response and return a bidResponses array // The response body and headers can be retrieved like this: // From 1c1e50fb2c0b0cd1031760cda8a6413e6c45f684 Mon Sep 17 00:00:00 2001 From: Dave Bemiller Date: Wed, 25 Oct 2017 09:36:26 -0400 Subject: [PATCH 3/8] Documented the serverResponses in getUserSyncs --- dev-docs/bidder-adapter-1.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/dev-docs/bidder-adapter-1.md b/dev-docs/bidder-adapter-1.md index cb68db1d51..963bd0b9ee 100644 --- a/dev-docs/bidder-adapter-1.md +++ b/dev-docs/bidder-adapter-1.md @@ -162,7 +162,7 @@ export const spec = { isBidRequestValid: function(bid) {}, buildRequests: function(validBidRequests[]) {}, interpretResponse: function(serverResponse, request) {}, - getUserSyncs: function(syncOptions) {} + getUserSyncs: function(syncOptions, serverResponses) {} } registerBidder(spec); @@ -287,11 +287,15 @@ All user ID sync activity must be done in one of two ways: {% highlight js %} { - getUserSyncs: function(syncOptions) { - if (syncOptions.iframeEnabled) { + getUserSyncs: function(syncOptions, serverResponses) { + if (syncOptions.iframeEnabled && serverResponses.length > 0) { + const syncFromServer = serverResponses[0].body.userSync return [{ type: 'iframe', url: '//acdn.adnxs.com/ib/static/usersync/v3/async_usersync.html' + }, { + type: 'url', + url: syncFromServer.url }]; } } @@ -465,7 +469,7 @@ export const spec = { }; return bidResponses; }, - getUserSyncs: function(syncOptions) { + getUserSyncs: function(syncOptions, serverResponses) { if (syncOptions.iframeEnabled) { return [{ type: 'iframe', From dd544e8fff58af68ee93565c08cbc25addedcf3a Mon Sep 17 00:00:00 2001 From: Dave Bemiller Date: Wed, 25 Oct 2017 09:41:29 -0400 Subject: [PATCH 4/8] Better example code. --- dev-docs/bidder-adapter-1.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/dev-docs/bidder-adapter-1.md b/dev-docs/bidder-adapter-1.md index 963bd0b9ee..514f2b9856 100644 --- a/dev-docs/bidder-adapter-1.md +++ b/dev-docs/bidder-adapter-1.md @@ -289,13 +289,12 @@ All user ID sync activity must be done in one of two ways: { getUserSyncs: function(syncOptions, serverResponses) { if (syncOptions.iframeEnabled && serverResponses.length > 0) { - const syncFromServer = serverResponses[0].body.userSync return [{ type: 'iframe', url: '//acdn.adnxs.com/ib/static/usersync/v3/async_usersync.html' }, { - type: 'url', - url: syncFromServer.url + type: 'image', + url: serverResponses[0].body.userSync.url }]; } } From af58b8908a93dc7a700fc9125c3477fc91a3a6c4 Mon Sep 17 00:00:00 2001 From: Dave Bemiller Date: Wed, 25 Oct 2017 09:43:14 -0400 Subject: [PATCH 5/8] Added code sample to the bottom of the page too. --- dev-docs/bidder-adapter-1.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/dev-docs/bidder-adapter-1.md b/dev-docs/bidder-adapter-1.md index 514f2b9856..4ef58ff2b8 100644 --- a/dev-docs/bidder-adapter-1.md +++ b/dev-docs/bidder-adapter-1.md @@ -293,7 +293,7 @@ All user ID sync activity must be done in one of two ways: type: 'iframe', url: '//acdn.adnxs.com/ib/static/usersync/v3/async_usersync.html' }, { - type: 'image', + type: 'iframe', url: serverResponses[0].body.userSync.url }]; } @@ -469,10 +469,13 @@ export const spec = { return bidResponses; }, getUserSyncs: function(syncOptions, serverResponses) { - if (syncOptions.iframeEnabled) { + if (syncOptions.iframeEnabled && serverResponses.length > 0) { return [{ type: 'iframe', url: 'ADAPTER_SYNC_URL' + }, { + type: 'iframe', + url: serverResponses[0].body.userSync.url }]; } } From 105772dd851a917e3a96a38b6c8ff97bd675f0dc Mon Sep 17 00:00:00 2001 From: Dave Bemiller Date: Wed, 25 Oct 2017 09:46:23 -0400 Subject: [PATCH 6/8] Added jsdocs to the last getUserSyncs example. --- dev-docs/bidder-adapter-1.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/dev-docs/bidder-adapter-1.md b/dev-docs/bidder-adapter-1.md index 4ef58ff2b8..94aa28c5e0 100644 --- a/dev-docs/bidder-adapter-1.md +++ b/dev-docs/bidder-adapter-1.md @@ -468,6 +468,14 @@ export const spec = { }; return bidResponses; }, + + /** + * Register the user sync pixels which should be dropped after the auction. + * + * @param {SyncOptions} syncOptions An object describing which user sync types are allowed. + * @param {ServerResponse[]} serverResponses An array of all the responses from the server. + * @return {UserSync[]} An array of user syncs which prebid should add to the page. + */ getUserSyncs: function(syncOptions, serverResponses) { if (syncOptions.iframeEnabled && serverResponses.length > 0) { return [{ From c523c5a75539b9f95ded995a39864670b65c2d26 Mon Sep 17 00:00:00 2001 From: Dave Bemiller Date: Wed, 25 Oct 2017 09:50:43 -0400 Subject: [PATCH 7/8] Shortened the comments for better formatting in the UI. --- dev-docs/bidder-adapter-1.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dev-docs/bidder-adapter-1.md b/dev-docs/bidder-adapter-1.md index 94aa28c5e0..1843fb1d25 100644 --- a/dev-docs/bidder-adapter-1.md +++ b/dev-docs/bidder-adapter-1.md @@ -472,9 +472,9 @@ export const spec = { /** * Register the user sync pixels which should be dropped after the auction. * - * @param {SyncOptions} syncOptions An object describing which user sync types are allowed. - * @param {ServerResponse[]} serverResponses An array of all the responses from the server. - * @return {UserSync[]} An array of user syncs which prebid should add to the page. + * @param {SyncOptions} syncOptions Which user syncs are allowed? + * @param {ServerResponse[]} serverResponses List of server's responses. + * @return {UserSync[]} The user syncs which should be dropped. */ getUserSyncs: function(syncOptions, serverResponses) { if (syncOptions.iframeEnabled && serverResponses.length > 0) { From 4c5989d1fe9a30e0dc8ed9f03bcd73cc1d4bea14 Mon Sep 17 00:00:00 2001 From: Dave Bemiller Date: Wed, 25 Oct 2017 09:56:38 -0400 Subject: [PATCH 8/8] Better sample code. --- dev-docs/bidder-adapter-1.md | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/dev-docs/bidder-adapter-1.md b/dev-docs/bidder-adapter-1.md index 1843fb1d25..21967f8d88 100644 --- a/dev-docs/bidder-adapter-1.md +++ b/dev-docs/bidder-adapter-1.md @@ -288,15 +288,20 @@ All user ID sync activity must be done in one of two ways: { getUserSyncs: function(syncOptions, serverResponses) { - if (syncOptions.iframeEnabled && serverResponses.length > 0) { - return [{ + const syncs = [] + if (syncOptions.iframeEnabled) { + syncs.push({ type: 'iframe', url: '//acdn.adnxs.com/ib/static/usersync/v3/async_usersync.html' - }, { - type: 'iframe', + }); + } + if (syncOptions.pixelEnabled && serverResponses.length > 0) { + syncs.push({ + type: 'image', url: serverResponses[0].body.userSync.url - }]; + }); } + return syncs; } } @@ -477,15 +482,20 @@ export const spec = { * @return {UserSync[]} The user syncs which should be dropped. */ getUserSyncs: function(syncOptions, serverResponses) { - if (syncOptions.iframeEnabled && serverResponses.length > 0) { - return [{ - type: 'iframe', - url: 'ADAPTER_SYNC_URL' - }, { + const syncs = [] + if (syncOptions.iframeEnabled) { + syncs.push({ type: 'iframe', + url: '//acdn.adnxs.com/ib/static/usersync/v3/async_usersync.html' + }); + } + if (syncOptions.pixelEnabled && serverResponses.length > 0) { + syncs.push({ + type: 'image', url: serverResponses[0].body.userSync.url - }]; + }); } + return syncs; } } registerBidder(spec);