Skip to content

Commit ab59133

Browse files
committed
Update setuid endpoint to accept only bidder name
1 parent 7ac551f commit ab59133

3 files changed

Lines changed: 14 additions & 53 deletions

File tree

src/main/java/org/prebid/server/auction/model/SetuidContext.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public class SetuidContext {
2727

2828
Account account;
2929

30-
String bidderQueryParam;
30+
String bidder;
3131

3232
@JsonIgnore
3333
Usersyncer usersyncer;

src/main/java/org/prebid/server/handler/SetuidHandler.java

Lines changed: 11 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@
5858
import org.prebid.server.vertx.verticles.server.application.ApplicationResource;
5959

6060
import java.util.Collections;
61-
import java.util.Comparator;
6261
import java.util.List;
6362
import java.util.Map;
6463
import java.util.Objects;
@@ -89,7 +88,6 @@ public class SetuidHandler implements ApplicationResource {
8988
private final Metrics metrics;
9089
private final TimeoutFactory timeoutFactory;
9190
private final Map<String, Usersyncer> bidderToUsersyncer;
92-
private final Map<String, Usersyncer> cookieNameToUsersyncer;
9391

9492
public SetuidHandler(long defaultTimeout,
9593
UidsCookieService uidsCookieService,
@@ -113,9 +111,14 @@ public SetuidHandler(long defaultTimeout,
113111
this.analyticsDelegator = Objects.requireNonNull(analyticsDelegator);
114112
this.metrics = Objects.requireNonNull(metrics);
115113
this.timeoutFactory = Objects.requireNonNull(timeoutFactory);
114+
this.bidderToUsersyncer = collectUsersyncers(bidderCatalog);
115+
}
116+
117+
private static Map<String, Usersyncer> collectUsersyncers(BidderCatalog bidderCatalog) {
116118
validateUsersyncersDuplicates(bidderCatalog);
117-
this.bidderToUsersyncer = collectUsersyncersByBidderName(bidderCatalog);
118-
this.cookieNameToUsersyncer = collectUsersyncersByCookieName(bidderCatalog);
119+
return bidderCatalog.usersyncReadyBidders().stream()
120+
.map(bidder -> bidderCatalog.usersyncerByName(bidder).orElseThrow())
121+
.collect(Collectors.toMap(Usersyncer::getBidder, Function.identity()));
119122
}
120123

121124
private static void validateUsersyncersDuplicates(BidderCatalog bidderCatalog) {
@@ -146,20 +149,6 @@ private static boolean isAliasWithRootCookieFamilyName(BidderCatalog bidderCatal
146149
&& parentCookieFamilyName.equals(bidderCookieFamilyName);
147150
}
148151

149-
private static Map<String, Usersyncer> collectUsersyncersByBidderName(BidderCatalog bidderCatalog) {
150-
return bidderCatalog.usersyncReadyBidders().stream()
151-
.map(bidder -> bidderCatalog.usersyncerByName(bidder).orElseThrow())
152-
.collect(Collectors.toMap(Usersyncer::getBidder, Function.identity()));
153-
}
154-
155-
private static Map<String, Usersyncer> collectUsersyncersByCookieName(BidderCatalog bidderCatalog) {
156-
return bidderCatalog.usersyncReadyBidders().stream()
157-
.sorted(Comparator.comparing(bidderName -> BooleanUtils.toInteger(bidderCatalog.isAlias(bidderName))))
158-
.filter(StreamUtil.distinctBy(bidderCatalog::cookieFamilyName))
159-
.map(bidderName -> bidderCatalog.usersyncerByName(bidderName).orElseThrow())
160-
.collect(Collectors.toMap(Usersyncer::getCookieFamilyName, Function.identity()));
161-
}
162-
163152
@Override
164153
public List<HttpEndpoint> endpoints() {
165154
return Collections.singletonList(HttpEndpoint.of(HttpMethod.GET, Endpoint.setuid.value()));
@@ -175,13 +164,10 @@ public void handle(RoutingContext routingContext) {
175164
private Future<SetuidContext> toSetuidContext(RoutingContext routingContext) {
176165
final UidsCookie uidsCookie = uidsCookieService.parseFromRequest(routingContext);
177166
final HttpServerRequest httpRequest = routingContext.request();
178-
final String bidderQueryParam = httpRequest.getParam(BIDDER_PARAM);
167+
final String bidder = httpRequest.getParam(BIDDER_PARAM);
179168
final String requestAccount = httpRequest.getParam(ACCOUNT_PARAM);
180169
final Timeout timeout = timeoutFactory.create(defaultTimeout);
181-
182-
final Usersyncer usersyncer = ObjectUtils.firstNonNull(
183-
bidderToUsersyncer.get(bidderQueryParam),
184-
cookieNameToUsersyncer.get(bidderQueryParam));
170+
final Usersyncer usersyncer = bidderToUsersyncer.get(bidder);
185171

186172
return accountById(requestAccount, timeout)
187173
.compose(account -> setuidPrivacyContextFactory.contextFrom(httpRequest, account, timeout)
@@ -190,7 +176,7 @@ private Future<SetuidContext> toSetuidContext(RoutingContext routingContext) {
190176
.uidsCookie(uidsCookie)
191177
.timeout(timeout)
192178
.account(account)
193-
.bidderQueryParam(bidderQueryParam)
179+
.bidder(bidder)
194180
.usersyncer(usersyncer)
195181
.privacyContext(privacyContext)
196182
.build()))
@@ -239,7 +225,7 @@ private void processSetuidContext(SetuidContext setuidContext, RoutingContext ro
239225
}
240226

241227
private void validateSetuidContext(SetuidContext setuidContext) {
242-
if (StringUtils.isBlank(setuidContext.getBidderQueryParam())) {
228+
if (StringUtils.isBlank(setuidContext.getBidder())) {
243229
throw new InvalidRequestException("\"bidder\" query param is required");
244230
}
245231

src/test/java/org/prebid/server/handler/SetuidHandlerTest.java

Lines changed: 2 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -473,32 +473,7 @@ public void shouldRespondWithCookieFromRequestParam() throws IOException {
473473
}
474474

475475
@Test
476-
public void shouldRespondWithCookieFromRequestParamWhenBidderAndCookieFamilyAreDifferentWhenCookieFamilyNameIsUsed()
477-
throws IOException {
478-
479-
// given
480-
final UidsCookie uidsCookie = emptyUidsCookie();
481-
given(uidsCookieService.parseFromRequest(any(RoutingContext.class)))
482-
.willReturn(uidsCookie);
483-
given(uidsCookieService.updateUidsCookie(uidsCookie, ADNXS, "J5VLCWQP-26-CWFT"))
484-
.willReturn(updated(uidsCookie.updateUid(ADNXS, "J5VLCWQP-26-CWFT")));
485-
486-
given(httpRequest.getParam("bidder")).willReturn(ADNXS);
487-
given(httpRequest.getParam("uid")).willReturn("J5VLCWQP-26-CWFT");
488-
489-
// when
490-
setuidHandler.handle(routingContext);
491-
492-
// then
493-
verify(routingContext, never()).addCookie(any(Cookie.class));
494-
final String encodedUidsCookie = getUidsCookie();
495-
final Uids decodedUids = decodeUids(encodedUidsCookie);
496-
assertThat(decodedUids.getUids()).hasSize(1);
497-
assertThat(decodedUids.getUids().get(ADNXS).getUid()).isEqualTo("J5VLCWQP-26-CWFT");
498-
}
499-
500-
@Test
501-
public void shouldRespondWithCookieFromRequestParamWhenBidderAndCookieFamilyAreDifferentWhenBidderNameIsUsed()
476+
public void shouldRespondWithCookieFromRequestParamWhenBidderAndCookieFamilyAreDifferent()
502477
throws IOException {
503478

504479
// given
@@ -744,7 +719,7 @@ public void shouldReturnMultipleCookies() throws IOException {
744719
public void shouldRespondWithCookieIfUserIsNotInGdprScope() throws IOException {
745720
// given
746721
given(tcfDefinerService.resultForVendorIds(anySet(), any()))
747-
.willReturn(Future.succeededFuture(TcfResponse.of(false, emptyMap(), null)));
722+
.willReturn(Future.succeededFuture(TcfResponse.<Integer>of(false, emptyMap(), null)));
748723

749724
final UidsCookie uidsCookie = emptyUidsCookie();
750725
given(uidsCookieService.parseFromRequest(any(RoutingContext.class)))

0 commit comments

Comments
 (0)