Skip to content

Commit 54722b7

Browse files
author
EvgeniiMunin
committed
fix review3: refactos
1 parent 3545bae commit 54722b7

File tree

6 files changed

+48
-39
lines changed

6 files changed

+48
-39
lines changed

extra/modules/greenbids-real-time-data/src/main/java/org/prebid/server/hooks/modules/greenbids/real/time/data/config/GreenbidsRealTimeDataConfiguration.java

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
import com.github.benmanes.caffeine.cache.Caffeine;
66
import com.google.cloud.storage.Storage;
77
import com.google.cloud.storage.StorageOptions;
8+
import com.maxmind.geoip2.DatabaseReader;
89
import io.vertx.core.Vertx;
10+
import org.prebid.server.exception.PreBidException;
911
import org.prebid.server.hooks.modules.greenbids.real.time.data.core.ThrottlingThresholds;
1012
import org.prebid.server.hooks.modules.greenbids.real.time.data.model.config.GreenbidsRealTimeDataProperties;
1113
import org.prebid.server.hooks.modules.greenbids.real.time.data.model.predictor.FilterService;
@@ -20,6 +22,7 @@
2022
import org.springframework.context.annotation.Configuration;
2123

2224
import java.io.File;
25+
import java.io.IOException;
2326
import java.util.List;
2427
import java.util.concurrent.TimeUnit;
2528

@@ -37,13 +40,17 @@ GreenbidsRealTimeDataModule greenbidsRealTimeDataModule(
3740
final ObjectMapper mapper = ObjectMapperProvider.mapper();
3841

3942
final File database = new File(properties.getGeoLiteCountryPath());
40-
41-
return new GreenbidsRealTimeDataModule(List.of(
42-
new GreenbidsRealTimeDataProcessedAuctionRequestHook(
43-
mapper,
44-
database,
45-
filterService,
46-
onnxModelRunnerWithThresholds)));
43+
try {
44+
final DatabaseReader dbReader = new DatabaseReader.Builder(database).build();
45+
return new GreenbidsRealTimeDataModule(List.of(
46+
new GreenbidsRealTimeDataProcessedAuctionRequestHook(
47+
mapper,
48+
dbReader,
49+
filterService,
50+
onnxModelRunnerWithThresholds)));
51+
} catch (IOException e) {
52+
throw new PreBidException("Failed build DatabaseReader from DB", e);
53+
}
4754
}
4855

4956
@Bean
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,18 @@
11
package org.prebid.server.hooks.modules.greenbids.real.time.data.core;
22

3+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
34
import com.fasterxml.jackson.annotation.JsonProperty;
45
import lombok.Value;
56

67
import java.util.List;
78

89
@Value(staticConstructor = "of")
10+
@JsonIgnoreProperties(ignoreUnknown = true)
911
public class ThrottlingThresholds {
1012

1113
@JsonProperty("thresholds")
1214
List<Double> thresholds;
1315

1416
@JsonProperty("tpr")
1517
List<Double> tpr;
16-
17-
@JsonProperty("fpr")
18-
List<Double> fpr;
19-
20-
@JsonProperty("version")
21-
String version;
2218
}

extra/modules/greenbids-real-time-data/src/main/java/org/prebid/server/hooks/modules/greenbids/real/time/data/model/data/GreenbidsInferenceData.java

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import org.prebid.server.exception.PreBidException;
1616
import org.prebid.server.proto.openrtb.ext.request.ExtImpPrebid;
1717

18-
import java.io.File;
1918
import java.io.IOException;
2019
import java.net.InetAddress;
2120
import java.time.ZoneId;
@@ -34,7 +33,7 @@ public class GreenbidsInferenceData {
3433

3534
public static GreenbidsInferenceData of(
3635
BidRequest bidRequest,
37-
File database,
36+
DatabaseReader dbReader,
3837
ObjectMapper mapper) {
3938

4039
final GreenbidsUserAgent userAgent = Optional.ofNullable(bidRequest.getDevice())
@@ -45,7 +44,7 @@ public static GreenbidsInferenceData of(
4544
final List<ThrottlingMessage> throttlingMessages = extractThrottlingMessages(
4645
bidRequest,
4746
userAgent,
48-
database,
47+
dbReader,
4948
mapper);
5049

5150
return of(throttlingMessages);
@@ -54,7 +53,7 @@ public static GreenbidsInferenceData of(
5453
private static List<ThrottlingMessage> extractThrottlingMessages(
5554
BidRequest bidRequest,
5655
GreenbidsUserAgent greenbidsUserAgent,
57-
File database,
56+
DatabaseReader dbReader,
5857
ObjectMapper mapper) {
5958

6059
final ZonedDateTime timestamp = ZonedDateTime.now(ZoneId.of("UTC"));
@@ -72,7 +71,7 @@ private static List<ThrottlingMessage> extractThrottlingMessages(
7271
hostname,
7372
hourBucket,
7473
minuteQuadrant,
75-
database,
74+
dbReader,
7675
mapper))
7776
.collect(Collectors.toList());
7877
}
@@ -84,7 +83,7 @@ private static Stream<ThrottlingMessage> extractMessagesForImp(
8483
String hostname,
8584
Integer hourBucket,
8685
Integer minuteQuadrant,
87-
File database,
86+
DatabaseReader dbReader,
8887
ObjectMapper mapper) {
8988

9089
final String impId = imp.getId();
@@ -93,7 +92,7 @@ private static Stream<ThrottlingMessage> extractMessagesForImp(
9392
final String ip = Optional.ofNullable(bidRequest.getDevice())
9493
.map(Device::getIp)
9594
.orElse(null);
96-
final String countryFromIp = getCountrySafely(ip, database);
95+
final String countryFromIp = getCountrySafely(ip, dbReader);
9796
return createThrottlingMessages(
9897
bidderNode,
9998
impId,
@@ -104,9 +103,9 @@ private static Stream<ThrottlingMessage> extractMessagesForImp(
104103
minuteQuadrant).stream();
105104
}
106105

107-
private static String getCountrySafely(String ip, File database) {
106+
private static String getCountrySafely(String ip, DatabaseReader dbReader) {
108107
try {
109-
return getCountry(ip, database);
108+
return getCountry(ip, dbReader);
110109
} catch (IOException | GeoIp2Exception e) {
111110
throw new PreBidException("Failed to get country for IP", e);
112111
}
@@ -172,11 +171,10 @@ private static ExtImpPrebid extImpPrebid(JsonNode extImpPrebid, ObjectMapper map
172171
}
173172
}
174173

175-
private static String getCountry(String ip, File database) throws IOException, GeoIp2Exception {
174+
private static String getCountry(String ip, DatabaseReader dbReader) throws IOException, GeoIp2Exception {
176175
return Optional.ofNullable(ip)
177176
.map(ipAddress -> {
178177
try {
179-
final DatabaseReader dbReader = new DatabaseReader.Builder(database).build();
180178
final InetAddress inetAddress = InetAddress.getByName(ipAddress);
181179
final CountryResponse response = dbReader.country(inetAddress);
182180
final Country country = response.getCountry();

extra/modules/greenbids-real-time-data/src/main/java/org/prebid/server/hooks/modules/greenbids/real/time/data/model/predictor/FilterService.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -75,16 +75,22 @@ private float[][] extractProbabilitiesValues(OnnxTensor tensor) throws OrtExcept
7575
}
7676

7777
private Map<String, Map<String, Boolean>> processProbabilities(
78-
float[][] probabiliies,
78+
float[][] probabilities,
7979
List<ThrottlingMessage> throttlingMessages,
8080
Double threshold) {
81-
final Map<String, Map<String, Boolean>> impsBiddersFilterMap = new HashMap<>();
82-
IntStream.range(0, probabiliies.length)
83-
.mapToObj(i -> createEntry(throttlingMessages.get(i), probabiliies[i][1], threshold))
84-
.forEach(entry -> impsBiddersFilterMap
85-
.computeIfAbsent(entry.getKey(), k -> new HashMap<>())
86-
.put(entry.getValue().getKey(), entry.getValue().getValue()));
87-
return impsBiddersFilterMap;
81+
return IntStream.range(0, probabilities.length)
82+
.mapToObj(i -> createEntry(throttlingMessages.get(i), probabilities[i][1], threshold))
83+
.collect(Collectors.toMap(
84+
Map.Entry::getKey,
85+
entry -> {
86+
final Map<String, Boolean> bidderToIsKeptInAuction = new HashMap<>();
87+
bidderToIsKeptInAuction.put(entry.getValue().getKey(), entry.getValue().getValue());
88+
return bidderToIsKeptInAuction;
89+
},
90+
(existingMap, newMap) -> {
91+
existingMap.putAll(newMap);
92+
return existingMap;
93+
}));
8894
}
8995

9096
private Map.Entry<String, Map.Entry<String, Boolean>> createEntry(

extra/modules/greenbids-real-time-data/src/main/java/org/prebid/server/hooks/modules/greenbids/real/time/data/v1/GreenbidsRealTimeDataProcessedAuctionRequestHook.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.fasterxml.jackson.databind.ObjectMapper;
66
import com.fasterxml.jackson.databind.node.ObjectNode;
77
import com.iab.openrtb.request.BidRequest;
8+
import com.maxmind.geoip2.DatabaseReader;
89
import io.vertx.core.Future;
910
import org.apache.commons.collections4.CollectionUtils;
1011
import org.prebid.server.auction.model.AuctionContext;
@@ -34,7 +35,6 @@
3435
import org.prebid.server.proto.openrtb.ext.request.ExtRequest;
3536
import org.prebid.server.proto.openrtb.ext.request.ExtRequestPrebid;
3637

37-
import java.io.File;
3838
import java.util.Collections;
3939
import java.util.List;
4040
import java.util.Map;
@@ -49,17 +49,17 @@ public class GreenbidsRealTimeDataProcessedAuctionRequestHook implements Process
4949
private static final String BID_REQUEST_ANALYTICS_EXTENSION_NAME = "greenbids-rtd";
5050

5151
private final ObjectMapper mapper;
52-
private final File database;
52+
private final DatabaseReader dbReader;
5353
private final FilterService filterService;
5454
private final OnnxModelRunnerWithThresholds onnxModelRunnerWithThresholds;
5555

5656
public GreenbidsRealTimeDataProcessedAuctionRequestHook(
5757
ObjectMapper mapper,
58-
File database,
58+
DatabaseReader dbReader,
5959
FilterService filterService,
6060
OnnxModelRunnerWithThresholds onnxModelRunnerWithThresholds) {
6161
this.mapper = Objects.requireNonNull(mapper);
62-
this.database = Objects.requireNonNull(database);
62+
this.dbReader = Objects.requireNonNull(dbReader);
6363
this.filterService = Objects.requireNonNull(filterService);
6464
this.onnxModelRunnerWithThresholds = Objects.requireNonNull(onnxModelRunnerWithThresholds);
6565
}
@@ -121,7 +121,7 @@ private Future<InvocationResult<AuctionRequestPayload>> toInvocationResult(
121121
final Map<String, Map<String, Boolean>> impsBiddersFilterMap;
122122
try {
123123
final GreenbidsInferenceData greenbidsInferenceData = GreenbidsInferenceData
124-
.of(bidRequest, database, mapper);
124+
.of(bidRequest, dbReader, mapper);
125125

126126
impsBiddersFilterMap = filterService.filterBidders(
127127
onnxModelRunner,

extra/modules/greenbids-real-time-data/src/test/java/org/prebid/server/hooks/modules/greenbids/real/time/data/v1/GreenbidsRealTimeDataProcessedAuctionRequestHookTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.iab.openrtb.request.Format;
1515
import com.iab.openrtb.request.Imp;
1616
import com.iab.openrtb.request.Site;
17+
import com.maxmind.geoip2.DatabaseReader;
1718
import io.vertx.core.Future;
1819
import io.vertx.core.Vertx;
1920
import org.junit.jupiter.api.BeforeEach;
@@ -68,7 +69,7 @@ public class GreenbidsRealTimeDataProcessedAuctionRequestHookTest {
6869
private Cache<String, ThrottlingThresholds> thresholdsCacheWithExpiration;
6970

7071
@BeforeEach
71-
public void setUp() {
72+
public void setUp() throws IOException {
7273
final ObjectMapper mapper = new ObjectMapper();
7374
jacksonMapper = new JacksonMapper(mapper);
7475
modelCacheWithExpiration = Caffeine.newBuilder()
@@ -80,6 +81,7 @@ public void setUp() {
8081
final Storage storage = StorageOptions.newBuilder()
8182
.setProjectId("test_project").build().getService();
8283
final File database = new File("src/test/resources/GeoLite2-Country.mmdb");
84+
final DatabaseReader dbReader = new DatabaseReader.Builder(database).build();
8385
final FilterService filterService = new FilterService();
8486
final OnnxModelRunnerWithThresholds onnxModelRunnerWithThresholds = new OnnxModelRunnerWithThresholds(
8587
modelCacheWithExpiration,
@@ -91,7 +93,7 @@ public void setUp() {
9193
Vertx.vertx());
9294
target = new GreenbidsRealTimeDataProcessedAuctionRequestHook(
9395
mapper,
94-
database,
96+
dbReader,
9597
filterService,
9698
onnxModelRunnerWithThresholds);
9799
}

0 commit comments

Comments
 (0)