Skip to content

Commit 4fe5c18

Browse files
author
ilya
committed
DATA-43462: Fixing PR issues
1 parent 4bf3c4d commit 4fe5c18

File tree

1 file changed

+53
-38
lines changed

1 file changed

+53
-38
lines changed

extra/modules/live-intent-omni-channel-identity/src/main/java/org/prebid/server/hooks/modules/liveintent/omni/channel/identity/v1/hooks/LiveIntentOmniChannelIdentityProcessedAuctionRequestHook.java

Lines changed: 53 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,17 @@
4040
import org.prebid.server.proto.openrtb.ext.request.ExtRequestPrebidDataEidPermissions;
4141
import org.prebid.server.util.HttpUtil;
4242
import org.prebid.server.util.ListUtil;
43+
import org.prebid.server.util.StreamUtil;
4344
import org.prebid.server.vertx.httpclient.HttpClient;
4445
import org.prebid.server.vertx.httpclient.model.HttpClientResponse;
4546

47+
import java.util.Collections;
4648
import java.util.List;
4749
import java.util.Objects;
4850
import java.util.Optional;
51+
import java.util.Set;
4952
import java.util.concurrent.ThreadLocalRandom;
53+
import java.util.stream.Collectors;
5054
import java.util.stream.Stream;
5155

5256
public class LiveIntentOmniChannelIdentityProcessedAuctionRequestHook implements ProcessedAuctionRequestHook {
@@ -198,47 +202,58 @@ private AuctionRequestPayload updatedPayload(AuctionRequestPayload requestPayloa
198202
}
199203

200204
private BidRequest updateAllowedBidders(BidRequest bidRequest, List<Eid> resolvedEids) {
201-
if (this.targetBidders.isEmpty()) {
205+
if (targetBidders.isEmpty()) {
202206
return bidRequest;
203207
}
204208

205-
final List<String> resolvedSources = resolvedEids.stream().map(Eid::getSource).distinct().toList();
206-
final ExtRequest requestExt = bidRequest.getExt();
207-
final ExtRequestPrebid prebid = requestExt == null ? null : requestExt.getPrebid();
208-
final ExtRequestPrebidData prebidData = prebid != null
209-
? prebid.getData()
210-
: null;
211-
final List<ExtRequestPrebidDataEidPermissions> eidPermissions = prebidData == null
212-
? List.of()
213-
: CollectionUtils.emptyIfNull(prebidData.getEidPermissions()).stream().toList();
214-
final Stream<ExtRequestPrebidDataEidPermissions> existingPermissions = eidPermissions
215-
.stream()
216-
.filter(e -> resolvedSources.contains(e.getSource()));
217-
218-
final Stream<String> missingSources = resolvedSources.stream()
219-
.filter(src -> eidPermissions.stream().noneMatch(e -> e.getSource().equals(src)));
220-
221-
final Stream<ExtRequestPrebidDataEidPermissions> additionalPermissions = eidPermissions.stream()
222-
.filter(e -> !resolvedSources.contains(e.getSource()));
223-
224-
final List<ExtRequestPrebidDataEidPermissions> updatedPermissions = Stream.of(
225-
additionalPermissions,
226-
missingSources.map(src -> ExtRequestPrebidDataEidPermissions.of(src, this.targetBidders)),
227-
existingPermissions.map(p -> ExtRequestPrebidDataEidPermissions.of(
228-
p.getSource(),
229-
Stream.concat(p.getBidders().stream(), this.targetBidders.stream())
230-
.distinct().toList())))
231-
.flatMap(s -> s).toList();
232-
233-
final List<String> bidders = prebidData == null ? this.targetBidders : CollectionUtils.union(this.targetBidders,
234-
CollectionUtils.emptyIfNull(prebidData.getBidders())).stream().distinct().toList();
235-
236-
final ExtRequestPrebidData updatedPrebidData = ExtRequestPrebidData.of(bidders, updatedPermissions);
237-
final ExtRequestPrebid updatedExtPrebid = prebid == null
238-
? ExtRequestPrebid.builder().data(updatedPrebidData).build()
239-
: prebid.toBuilder().data(updatedPrebidData).build();
240-
241-
return bidRequest.toBuilder().ext(ExtRequest.of(updatedExtPrebid)).build();
209+
final ExtRequest ext = bidRequest.getExt();
210+
final ExtRequestPrebid extPrebid = ext != null ? ext.getPrebid() : null;
211+
final ExtRequestPrebidData extPrebidData = extPrebid != null ? extPrebid.getData() : null;
212+
213+
final ExtRequestPrebid updatedExtPrebid = Optional.ofNullable(extPrebid)
214+
.map(ExtRequestPrebid::toBuilder)
215+
.orElseGet(ExtRequestPrebid::builder)
216+
.data(updatePrebidData(extPrebidData, resolvedEids))
217+
.build();
218+
219+
final ExtRequest updatedExtRequest = ExtRequest.of(updatedExtPrebid);
220+
if (ext != null) {
221+
mapper.fillExtension(updatedExtRequest, ext.getProperties());
222+
}
223+
224+
return bidRequest.toBuilder().ext(updatedExtRequest).build();
225+
}
226+
227+
private ExtRequestPrebidData updatePrebidData(ExtRequestPrebidData extPrebidData, List<Eid> resolvedEids) {
228+
final List<String> prebidDataBidders = extPrebidData != null ? extPrebidData.getBidders() : null;
229+
final List<String> updatedPrebidDataBidders = prebidDataBidders != null
230+
? (List<String>) CollectionUtils.union(targetBidders, prebidDataBidders)
231+
: targetBidders;
232+
233+
final Set<String> resolvedSources = resolvedEids.stream().map(Eid::getSource).collect(Collectors.toSet());
234+
235+
final List<ExtRequestPrebidDataEidPermissions> initialPermissions = Optional.ofNullable(extPrebidData)
236+
.map(ExtRequestPrebidData::getEidPermissions)
237+
.orElse(Collections.emptyList());
238+
final List<ExtRequestPrebidDataEidPermissions> updatedPermissions = Stream.concat(
239+
initialPermissions.stream()
240+
.map(permission -> updateEidPermission(permission, resolvedSources)),
241+
resolvedSources.stream()
242+
.map(source -> ExtRequestPrebidDataEidPermissions.of(source, targetBidders)))
243+
.filter(StreamUtil.distinctBy(ExtRequestPrebidDataEidPermissions::getSource))
244+
.toList();
245+
246+
return ExtRequestPrebidData.of(updatedPrebidDataBidders, updatedPermissions);
247+
}
248+
249+
private ExtRequestPrebidDataEidPermissions updateEidPermission(ExtRequestPrebidDataEidPermissions permission,
250+
Set<String> resolvedSources) {
251+
252+
return resolvedSources.contains(permission.getSource())
253+
? ExtRequestPrebidDataEidPermissions.of(
254+
permission.getSource(),
255+
(List<String>) CollectionUtils.union(permission.getBidders(), targetBidders))
256+
: permission;
242257
}
243258

244259
@Override

0 commit comments

Comments
 (0)