Skip to content

Commit ada978c

Browse files
committed
fix: PR prebid#14255 revisions
1 parent 31d2df7 commit ada978c

File tree

3 files changed

+220
-77
lines changed

3 files changed

+220
-77
lines changed

modules/apsBidAdapter.js

Lines changed: 59 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { isStr, isNumber, logWarn, logError } from '../src/utils.js';
22
import { registerBidder } from '../src/adapters/bidderFactory.js';
33
import { config } from '../src/config.js';
44
import { BANNER, VIDEO } from '../src/mediaTypes.js';
5+
import { hasPurpose1Consent } from '../src/utils/gdpr.js';
56
import { ortbConverter } from '../libraries/ortbConverter/converter.js';
67

78
/**
@@ -73,6 +74,18 @@ function record(eventName, data) {
7374
);
7475
}
7576

77+
/**
78+
* Record and log a new error.
79+
*
80+
* @param {string} eventName - The name of the event to record
81+
* @param {Error} err - Error object
82+
* @param {any} data - Event data object
83+
*/
84+
function recordAndLogError(eventName, err, data) {
85+
record(eventName, { ...data, error: err });
86+
logError(err.message);
87+
}
88+
7689
/**
7790
* Validates whether a given account ID is valid.
7891
*
@@ -131,32 +144,50 @@ export const converter = ortbConverter({
131144

132145
// Validate and process impressions - fail fast on structural issues
133146
if (!request.imp || !Array.isArray(request.imp)) {
134-
throw new Error('Request must contain a valid impressions array');
147+
recordAndLogError(
148+
'ortbConverterRequest/didError',
149+
new Error('Request must contain a valid impressions array')
150+
);
151+
return request;
135152
}
136153

137154
request.imp.forEach((imp, index) => {
138155
if (!imp) {
139-
throw new Error(`Impression at index ${index} is null or undefined`);
156+
recordAndLogError(
157+
'ortbConverterRequest/didError',
158+
new Error(`Impression at index ${index} is null or undefined`)
159+
);
160+
return; // continue to next iteration
140161
}
141162

163+
// If not banner, consider it valid. Move to the next impression
142164
if (!imp.banner) {
143-
return;
165+
return; // continue to next iteration
144166
}
145167

146168
const doesHWExist = imp.banner.w >= 0 && imp.banner.h >= 0;
147169
const doesFormatExist =
148170
Array.isArray(imp.banner.format) && imp.banner.format.length > 0;
149171

150-
if (!doesHWExist && doesFormatExist) {
151-
const { w, h } = imp.banner.format[0];
152-
if (typeof w !== 'number' || typeof h !== 'number') {
153-
throw new Error(
172+
// Skip if dimensions already exist or no format to pull from
173+
if (doesHWExist || !doesFormatExist) {
174+
return; // continue to next iteration
175+
}
176+
177+
const { w, h } = imp.banner.format[0];
178+
179+
if (typeof w !== 'number' || typeof h !== 'number') {
180+
recordAndLogError(
181+
'ortbConverterRequest/didError',
182+
new Error(
154183
`Invalid banner format dimensions at impression ${index}: w=${w}, h=${h}`
155-
);
156-
}
157-
imp.banner.w = w;
158-
imp.banner.h = h;
184+
)
185+
);
186+
return; // continue to next iteration
159187
}
188+
189+
imp.banner.w = w;
190+
imp.banner.h = h;
160191
});
161192

162193
return request;
@@ -201,8 +232,8 @@ export const spec = {
201232
}
202233
return true;
203234
} catch (err) {
204-
record('isBidRequestValid/didError', { error: err });
205-
logError('Error while validating bid request', err);
235+
err.message = `Error while validating bid request: ${err?.message}`;
236+
recordAndLogError('isBidRequestValid/didError', err);
206237
}
207238
},
208239

@@ -230,13 +261,10 @@ export const spec = {
230261
method: 'POST',
231262
url: endpoint,
232263
data: converter.toORTB({ bidRequests, bidderRequest }),
233-
options: {
234-
contentType: 'application/json',
235-
},
236264
};
237265
} catch (err) {
238-
record('buildRequests/didError', { error: err });
239-
logError('Error while building bid request', err);
266+
err.message = `Error while building bid request: ${err?.message}`;
267+
recordAndLogError('buildRequests/didError', err);
240268
}
241269
},
242270

@@ -283,8 +311,8 @@ export const spec = {
283311

284312
return interpretedResponse.bids;
285313
} catch (err) {
286-
record('interpretResponse/didError', { error: err });
287-
logError('Error while interpreting bid response', err);
314+
err.message = `Error while interpreting bid response: ${err?.message}`;
315+
recordAndLogError('interpretResponse/didError', err);
288316
}
289317
},
290318

@@ -305,17 +333,18 @@ export const spec = {
305333
) {
306334
record('getUserSyncs');
307335
try {
308-
const userSyncs = serverResponses.flatMap(
309-
(res) => res?.body?.ext?.userSyncs ?? []
310-
);
311-
return userSyncs.filter(
312-
(s) =>
313-
(s.type === 'iframe' && syncOptions.iframeEnabled) ||
314-
(s.type === 'image' && syncOptions.pixelEnabled)
315-
);
336+
if (hasPurpose1Consent(gdprConsent)) {
337+
return serverResponses
338+
.flatMap((res) => res?.body?.ext?.userSyncs ?? [])
339+
.filter(
340+
(s) =>
341+
(s.type === 'iframe' && syncOptions.iframeEnabled) ||
342+
(s.type === 'image' && syncOptions.pixelEnabled)
343+
);
344+
}
316345
} catch (err) {
317-
record('getUserSyncs/didError', { error: err });
318-
logError('Error while getting user syncs', err);
346+
err.message = `Error while getting user syncs: ${err?.message}`;
347+
recordAndLogError('getUserSyncs/didError', err);
319348
}
320349
},
321350

modules/apsBidAdapter.md

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,25 @@ pbjs.setBidderConfig(
2626
}
2727
},
2828
},
29-
mergeConfig // mergeConfig toggle
29+
true // mergeConfig toggle
3030
);
3131
```
3232

33+
## Test Bids
34+
35+
To trigger test bids, add the following debug statement to your configuration.
36+
37+
```
38+
window.pbjs.setBidderConfig({
39+
bidders: ["aps"],
40+
config: {
41+
aps: {
42+
debug: true
43+
}
44+
},
45+
}, true);
46+
```
47+
3348
## Ad Units
3449

3550
## Banner

0 commit comments

Comments
 (0)