Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.prebid.server.auction.privacy.contextfactory;

import com.iab.openrtb.request.App;
import com.iab.openrtb.request.BidRequest;
import com.iab.openrtb.request.Device;
import com.iab.openrtb.request.Geo;
Expand Down Expand Up @@ -101,13 +102,17 @@ private static AccountGdprConfig accountGdprConfig(Account account) {
}

private static RequestLogInfo requestLogInfo(MetricName requestType, BidRequest bidRequest, String accountId) {
final String referrerUrl = MetricName.openrtb2web == requestType
? Optional.ofNullable(bidRequest.getSite())
.map(Site::getRef)
.orElse(null)
: null;

return RequestLogInfo.of(requestType, referrerUrl, accountId);
final String source = switch (requestType) {
case MetricName.openrtb2web -> Optional.ofNullable(bidRequest.getSite())
.map(Site::getRef)
.orElse(null);
case MetricName.openrtb2app -> Optional.ofNullable(bidRequest.getApp())
.map(App::getBundle)
.orElse(null);
case null, default -> null;
};

return RequestLogInfo.of(requestType, source, accountId);
}

private static TcfContext logWarnings(List<String> debugWarnings, TcfContext tcfContext) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -421,8 +421,11 @@ private static void logWarn(String consent, String message, RequestLogInfo reque
}

private static String logMessage(String consent, String type, RequestLogInfo requestLogInfo, String message) {
return "Parsing consent string: \"%s\" failed for: %s type for account id: %s with ref: %s with exception: %s"
.formatted(consent, type, requestLogInfo.getAccountId(), requestLogInfo.getRefUrl(), message);
return """
Parsing consent string: "%s" failed for: \
%s type for account id: %s from source: \
%s with exception: %s"""
.formatted(consent, type, requestLogInfo.getAccountId(), requestLogInfo.getSource(), message);
}

private static boolean isConsentValid(TCString consent) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public class RequestLogInfo {

MetricName requestType;

String refUrl;
String source;

String accountId;
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.prebid.server.auction.privacy.contextfactory;

import com.iab.openrtb.request.App;
import com.iab.openrtb.request.BidRequest;
import com.iab.openrtb.request.Device;
import com.iab.openrtb.request.Site;
Expand Down Expand Up @@ -183,7 +184,9 @@ public void contextFromShouldAddRefUrlWhenPresentAndRequestTypeIsWeb() {
given(tcfDefinerService.resolveTcfContext(any(), any(), any(), any(), any(), any(), any(), any()))
.willReturn(Future.succeededFuture(TcfContext.empty()));

final BidRequest bidRequest = givenBidRequest(request -> request.site(Site.builder().ref("refUrl").build()));
final BidRequest bidRequest = givenBidRequest(request -> request
.site(Site.builder().ref("refUrl").build())
.app(App.builder().bundle("bundle").build()));
final AuctionContext auctionContext = givenAuctionContext(context -> context
.requestTypeMetric(MetricName.openrtb2web)
.httpRequest(givenHttpRequestContext("invalid"))
Expand All @@ -198,6 +201,37 @@ public void contextFromShouldAddRefUrlWhenPresentAndRequestTypeIsWeb() {
.resolveTcfContext(any(), any(), any(), any(), any(), eq(expectedRequestLogInfo), any(), any());
}

@Test
public void contextFromShouldAddBundleWhenPresentAndRequestTypeIsApp() {
// given
final Privacy privacy = Privacy.builder()
.gdpr("1")
.consentString("consent_string")
.ccpa(Ccpa.EMPTY)
.coppa(0)
.build();
given(privacyExtractor.validPrivacyFrom(any(), any())).willReturn(privacy);

given(tcfDefinerService.resolveTcfContext(any(), any(), any(), any(), any(), any(), any(), any()))
.willReturn(Future.succeededFuture(TcfContext.empty()));

final BidRequest bidRequest = givenBidRequest(request -> request
.site(Site.builder().ref("refUrl").build())
.app(App.builder().bundle("bundle").build()));
final AuctionContext auctionContext = givenAuctionContext(context -> context
.requestTypeMetric(MetricName.openrtb2app)
.httpRequest(givenHttpRequestContext("invalid"))
.bidRequest(bidRequest));

// when
target.contextFrom(auctionContext);

// then
final RequestLogInfo expectedRequestLogInfo = RequestLogInfo.of(MetricName.openrtb2app, "bundle", null);
verify(tcfDefinerService)
.resolveTcfContext(any(), any(), any(), any(), any(), eq(expectedRequestLogInfo), any(), any());
}

private static AuctionContext givenAuctionContext(
UnaryOperator<AuctionContext.AuctionContextBuilder> auctionContextCustomizer) {

Expand Down
Loading