Skip to content

Commit 9216dfd

Browse files
committed
fix review
1 parent ab14bf4 commit 9216dfd

File tree

8 files changed

+58
-78
lines changed

8 files changed

+58
-78
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public void initialize(Promise<Void> initializePromise) {
3636
final Path databasePath = Files.createTempFile("GeoLite2-Country", ".mmdb");
3737

3838
try (InputStream inputStream = url.openStream();
39-
FileOutputStream outputStream = new FileOutputStream(databasePath.toFile())) {
39+
FileOutputStream outputStream = new FileOutputStream(databasePath.toFile())) {
4040
inputStream.transferTo(outputStream);
4141
}
4242

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import org.apache.commons.lang3.StringUtils;
88
import org.prebid.server.analytics.reporter.greenbids.model.ExplorationResult;
99
import org.prebid.server.analytics.reporter.greenbids.model.Ortb2ImpExtResult;
10-
import org.prebid.server.hooks.modules.greenbids.real.time.data.model.data.Partner;
10+
import org.prebid.server.hooks.modules.greenbids.real.time.data.model.data.GreenbidsConfig;
1111
import org.prebid.server.hooks.modules.greenbids.real.time.data.model.result.AnalyticsResult;
1212
import org.prebid.server.hooks.modules.greenbids.real.time.data.model.result.GreenbidsInvocationResult;
1313
import org.prebid.server.hooks.v1.InvocationAction;
@@ -23,12 +23,12 @@ public class GreenbidsInvocationService {
2323
private static final int RANGE_16_BIT_INTEGER_DIVISION_BASIS = 0x10000;
2424

2525
public GreenbidsInvocationResult createGreenbidsInvocationResult(
26-
Partner partner,
26+
GreenbidsConfig greenbidsConfig,
2727
BidRequest bidRequest,
2828
Map<String, Map<String, Boolean>> impsBiddersFilterMap) {
2929

3030
final String greenbidsId = UUID.randomUUID().toString();
31-
final boolean isExploration = isExploration(partner, greenbidsId);
31+
final boolean isExploration = isExploration(greenbidsConfig, greenbidsId);
3232

3333
final BidRequest updatedBidRequest = isExploration
3434
? bidRequest
@@ -49,10 +49,10 @@ public GreenbidsInvocationResult createGreenbidsInvocationResult(
4949
return GreenbidsInvocationResult.of(updatedBidRequest, invocationAction, analyticsResult);
5050
}
5151

52-
private Boolean isExploration(Partner partner, String greenbidsId) {
52+
private Boolean isExploration(GreenbidsConfig greenbidsConfig, String greenbidsId) {
5353
final int hashInt = Integer.parseInt(
5454
greenbidsId.substring(greenbidsId.length() - 4), 16);
55-
return hashInt < partner.getExplorationRate() * RANGE_16_BIT_INTEGER_DIVISION_BASIS;
55+
return hashInt < greenbidsConfig.getExplorationRate() * RANGE_16_BIT_INTEGER_DIVISION_BASIS;
5656
}
5757

5858
private List<Imp> updateImps(BidRequest bidRequest, Map<String, Map<String, Boolean>> impsBiddersFilterMap) {

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package org.prebid.server.hooks.modules.greenbids.real.time.data.core;
22

33
import io.vertx.core.Future;
4-
import org.prebid.server.hooks.modules.greenbids.real.time.data.model.data.Partner;
4+
import org.prebid.server.hooks.modules.greenbids.real.time.data.model.data.GreenbidsConfig;
55

66
import java.util.Objects;
77

@@ -18,14 +18,14 @@ public OnnxModelRunnerWithThresholds(
1818
this.thresholdCache = Objects.requireNonNull(thresholdCache);
1919
}
2020

21-
public Future<OnnxModelRunner> retrieveOnnxModelRunner(Partner partner) {
22-
final String onnxModelPath = "models_pbuid=" + partner.getPbuid() + ".onnx";
23-
return modelCache.get(onnxModelPath, partner.getPbuid());
21+
public Future<OnnxModelRunner> retrieveOnnxModelRunner(GreenbidsConfig greenbidsConfig) {
22+
final String onnxModelPath = "models_pbuid=" + greenbidsConfig.getPbuid() + ".onnx";
23+
return modelCache.get(onnxModelPath, greenbidsConfig.getPbuid());
2424
}
2525

26-
public Future<Double> retrieveThreshold(Partner partner) {
27-
final String thresholdJsonPath = "thresholds_pbuid=" + partner.getPbuid() + ".json";
28-
return thresholdCache.get(thresholdJsonPath, partner.getPbuid())
29-
.map(partner::getThreshold);
26+
public Future<Double> retrieveThreshold(GreenbidsConfig greenbidsConfig) {
27+
final String thresholdJsonPath = "thresholds_pbuid=" + greenbidsConfig.getPbuid() + ".json";
28+
return thresholdCache.get(thresholdJsonPath, greenbidsConfig.getPbuid())
29+
.map(greenbidsConfig::getThreshold);
3030
}
3131
}
Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,7 @@
99
import java.util.stream.IntStream;
1010

1111
@Value(staticConstructor = "of")
12-
public class Partner {
13-
14-
@JsonProperty(required = true)
15-
Boolean enabled;
12+
public class GreenbidsConfig {
1613

1714
String pbuid;
1815

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

Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import org.prebid.server.hooks.modules.greenbids.real.time.data.core.GreenbidsInvocationService;
2222
import org.prebid.server.hooks.modules.greenbids.real.time.data.core.OnnxModelRunner;
2323
import org.prebid.server.hooks.modules.greenbids.real.time.data.core.OnnxModelRunnerWithThresholds;
24-
import org.prebid.server.hooks.modules.greenbids.real.time.data.model.data.Partner;
24+
import org.prebid.server.hooks.modules.greenbids.real.time.data.model.data.GreenbidsConfig;
2525
import org.prebid.server.hooks.modules.greenbids.real.time.data.model.data.ThrottlingMessage;
2626
import org.prebid.server.hooks.modules.greenbids.real.time.data.model.result.AnalyticsResult;
2727
import org.prebid.server.hooks.modules.greenbids.real.time.data.model.result.GreenbidsInvocationResult;
@@ -77,69 +77,57 @@ public Future<InvocationResult<AuctionRequestPayload>> call(
7777

7878
final AuctionContext auctionContext = invocationContext.auctionContext();
7979
final BidRequest bidRequest = auctionContext.getBidRequest();
80-
final Partner appliedPartner = Optional.ofNullable(parseBidRequestExt(auctionContext))
81-
.orElse(parseAccountConfig(auctionContext));
82-
83-
if (!appliedPartner.getEnabled()) {
84-
return Future.succeededFuture(toInvocationResult(
85-
bidRequest, null, InvocationAction.no_action));
86-
}
80+
final GreenbidsConfig greenbidsConfig = Optional.ofNullable(parseBidRequestExt(auctionContext))
81+
.orElse(parseAccountConfig(auctionContext.getAccount()));
8782

8883
return Future.all(
89-
onnxModelRunnerWithThresholds.retrieveOnnxModelRunner(appliedPartner),
90-
onnxModelRunnerWithThresholds.retrieveThreshold(appliedPartner))
84+
onnxModelRunnerWithThresholds.retrieveOnnxModelRunner(greenbidsConfig),
85+
onnxModelRunnerWithThresholds.retrieveThreshold(greenbidsConfig))
9186
.compose(compositeFuture -> toInvocationResult(
9287
bidRequest,
93-
appliedPartner,
88+
greenbidsConfig,
9489
compositeFuture.resultAt(0),
9590
compositeFuture.resultAt(1)))
9691
.recover(throwable -> Future.succeededFuture(toInvocationResult(
9792
bidRequest, null, InvocationAction.no_action)));
9893
}
9994

100-
private Partner parseBidRequestExt(AuctionContext auctionContext) {
95+
private GreenbidsConfig parseBidRequestExt(AuctionContext auctionContext) {
10196
return Optional.ofNullable(auctionContext)
10297
.map(AuctionContext::getBidRequest)
10398
.map(BidRequest::getExt)
10499
.map(ExtRequest::getPrebid)
105100
.map(ExtRequestPrebid::getAnalytics)
106101
.filter(this::isNotEmptyObjectNode)
107102
.map(analytics -> (ObjectNode) analytics.get(BID_REQUEST_ANALYTICS_EXTENSION_NAME))
108-
.map(this::toPartner)
103+
.map(this::toGreenbidsConfig)
109104
.orElse(null);
110105
}
111106

112107
private boolean isNotEmptyObjectNode(JsonNode analytics) {
113108
return analytics != null && analytics.isObject() && !analytics.isEmpty();
114109
}
115110

116-
private Partner parseAccountConfig(AuctionContext auctionContext) {
117-
final Map<String, ObjectNode> modules = Optional.ofNullable(auctionContext)
118-
.map(AuctionContext::getAccount)
111+
private GreenbidsConfig parseAccountConfig(Account account) {
112+
return Optional.ofNullable(account)
119113
.map(Account::getHooks)
120114
.map(AccountHooksConfiguration::getModules)
115+
.map(modules -> modules.get(name()))
116+
.map(this::toGreenbidsConfig)
121117
.orElse(null);
122-
123-
Partner partner = null;
124-
if (modules != null && modules.containsKey("greenbids")) {
125-
final ObjectNode moduleConfig = modules.get("greenbids");
126-
partner = toPartner(moduleConfig);
127-
}
128-
129-
return partner;
130118
}
131119

132-
private Partner toPartner(ObjectNode adapterNode) {
120+
private GreenbidsConfig toGreenbidsConfig(ObjectNode adapterNode) {
133121
try {
134-
return mapper.treeToValue(adapterNode, Partner.class);
122+
return mapper.treeToValue(adapterNode, GreenbidsConfig.class);
135123
} catch (JsonProcessingException e) {
136124
return null;
137125
}
138126
}
139127

140128
private Future<InvocationResult<AuctionRequestPayload>> toInvocationResult(
141129
BidRequest bidRequest,
142-
Partner partner,
130+
GreenbidsConfig greenbidsConfig,
143131
OnnxModelRunner onnxModelRunner,
144132
Double threshold) {
145133

@@ -158,7 +146,7 @@ private Future<InvocationResult<AuctionRequestPayload>> toInvocationResult(
158146
}
159147

160148
final GreenbidsInvocationResult greenbidsInvocationResult = greenbidsInvocationService
161-
.createGreenbidsInvocationResult(partner, bidRequest, impsBiddersFilterMap);
149+
.createGreenbidsInvocationResult(greenbidsConfig, bidRequest, impsBiddersFilterMap);
162150

163151
return Future.succeededFuture(toInvocationResult(
164152
greenbidsInvocationResult.getUpdatedBidRequest(),
@@ -227,4 +215,8 @@ private ObjectNode toObjectNode(Map<String, Ortb2ImpExtResult> values) {
227215
public String code() {
228216
return CODE;
229217
}
218+
219+
public String name() {
220+
return "greenbids";
221+
}
230222
}

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import org.junit.jupiter.api.extension.ExtendWith;
1111
import org.mockito.junit.jupiter.MockitoExtension;
1212
import org.prebid.server.analytics.reporter.greenbids.model.Ortb2ImpExtResult;
13-
import org.prebid.server.hooks.modules.greenbids.real.time.data.model.data.Partner;
13+
import org.prebid.server.hooks.modules.greenbids.real.time.data.model.data.GreenbidsConfig;
1414
import org.prebid.server.hooks.modules.greenbids.real.time.data.model.result.GreenbidsInvocationResult;
1515
import org.prebid.server.hooks.v1.InvocationAction;
1616

@@ -47,11 +47,11 @@ public void createGreenbidsInvocationResultShouldReturnUpdateBidRequestWhenNotEx
4747
final Device device = givenDevice(identity());
4848
final BidRequest bidRequest = givenBidRequest(request -> request, List.of(imp), device);
4949
final Map<String, Map<String, Boolean>> impsBiddersFilterMap = givenImpsBiddersFilterMap();
50-
final Partner partner = givenPartner(0.0);
50+
final GreenbidsConfig greenbidsConfig = givenPartner(0.0);
5151

5252
// when
5353
final GreenbidsInvocationResult result = target.createGreenbidsInvocationResult(
54-
partner, bidRequest, impsBiddersFilterMap);
54+
greenbidsConfig, bidRequest, impsBiddersFilterMap);
5555

5656
// then
5757
final JsonNode updatedBidRequestExtPrebidBidders = result.getUpdatedBidRequest().getImp().getFirst().getExt()
@@ -84,11 +84,11 @@ public void createGreenbidsInvocationResultShouldReturnNoActionWhenExploration()
8484
final Device device = givenDevice(identity());
8585
final BidRequest bidRequest = givenBidRequest(request -> request, List.of(imp), device);
8686
final Map<String, Map<String, Boolean>> impsBiddersFilterMap = givenImpsBiddersFilterMap();
87-
final Partner partner = givenPartner(1.0);
87+
final GreenbidsConfig greenbidsConfig = givenPartner(1.0);
8888

8989
// when
9090
final GreenbidsInvocationResult result = target.createGreenbidsInvocationResult(
91-
partner, bidRequest, impsBiddersFilterMap);
91+
greenbidsConfig, bidRequest, impsBiddersFilterMap);
9292

9393
// then
9494
final JsonNode updatedBidRequestExtPrebidBidders = result.getUpdatedBidRequest().getImp().getFirst().getExt()
@@ -120,7 +120,7 @@ private Map<String, Map<String, Boolean>> givenImpsBiddersFilterMap() {
120120
return impsBiddersFilterMap;
121121
}
122122

123-
private Partner givenPartner(Double explorationRate) {
124-
return Partner.of(true, "test-pbuid", 0.60, explorationRate);
123+
private GreenbidsConfig givenPartner(Double explorationRate) {
124+
return GreenbidsConfig.of("test-pbuid", 0.60, explorationRate);
125125
}
126126
}

src/main/java/org/prebid/server/analytics/reporter/greenbids/GreenbidsAnalyticsReporter.java

Lines changed: 15 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import org.prebid.server.analytics.reporter.greenbids.model.GreenbidsAdUnit;
2727
import org.prebid.server.analytics.reporter.greenbids.model.GreenbidsAnalyticsProperties;
2828
import org.prebid.server.analytics.reporter.greenbids.model.GreenbidsBid;
29-
import org.prebid.server.analytics.reporter.greenbids.model.GreenbidsPrebidExt;
29+
import org.prebid.server.analytics.reporter.greenbids.model.GreenbidsConfig;
3030
import org.prebid.server.analytics.reporter.greenbids.model.GreenbidsSource;
3131
import org.prebid.server.analytics.reporter.greenbids.model.GreenbidsUnifiedCode;
3232
import org.prebid.server.analytics.reporter.greenbids.model.MediaTypes;
@@ -119,10 +119,10 @@ public <T> Future<Void> processEvent(T event) {
119119
return Future.failedFuture(new PreBidException("Bid response or auction context cannot be null"));
120120
}
121121

122-
final GreenbidsPrebidExt greenbidsPrebidExt = Optional.ofNullable(parseBidRequestExt(auctionContext))
123-
.orElse(parseAccountConfig(auctionContext));
122+
final GreenbidsConfig greenbidsConfig = Optional.ofNullable(parseBidRequestExt(auctionContext))
123+
.orElse(parseAccountConfig(auctionContext.getAccount()));
124124

125-
if (greenbidsPrebidExt == null) {
125+
if (greenbidsConfig == null) {
126126
return Future.succeededFuture();
127127
}
128128

@@ -133,7 +133,7 @@ public <T> Future<Void> processEvent(T event) {
133133

134134
final String greenbidsId = greenbidsId(analyticsResultFromAnalyticsTag);
135135

136-
if (!isSampled(greenbidsPrebidExt.getGreenbidsSampling(), greenbidsId)) {
136+
if (!isSampled(greenbidsConfig.getGreenbidsSampling(), greenbidsId)) {
137137
return Future.succeededFuture();
138138
}
139139

@@ -144,7 +144,7 @@ public <T> Future<Void> processEvent(T event) {
144144
bidResponse,
145145
greenbidsId,
146146
billingId,
147-
greenbidsPrebidExt,
147+
greenbidsConfig,
148148
analyticsResultFromAnalyticsTag);
149149
commonMessageJson = jacksonMapper.encodeToString(commonMessage);
150150
} catch (PreBidException e) {
@@ -172,41 +172,34 @@ public <T> Future<Void> processEvent(T event) {
172172
return responseFuture.compose(this::processAnalyticServerResponse);
173173
}
174174

175-
private GreenbidsPrebidExt parseBidRequestExt(AuctionContext auctionContext) {
175+
private GreenbidsConfig parseBidRequestExt(AuctionContext auctionContext) {
176176
return Optional.ofNullable(auctionContext)
177177
.map(AuctionContext::getBidRequest)
178178
.map(BidRequest::getExt)
179179
.map(ExtRequest::getPrebid)
180180
.map(ExtRequestPrebid::getAnalytics)
181181
.filter(this::isNotEmptyObjectNode)
182182
.map(analytics -> (ObjectNode) analytics.get(BID_REQUEST_ANALYTICS_EXTENSION_NAME))
183-
.map(this::toGreenbidsPrebidExt)
183+
.map(this::toGreenbidsConfig)
184184
.orElse(null);
185185
}
186186

187187
private boolean isNotEmptyObjectNode(JsonNode analytics) {
188188
return analytics != null && analytics.isObject() && !analytics.isEmpty();
189189
}
190190

191-
private GreenbidsPrebidExt parseAccountConfig(AuctionContext auctionContext) {
192-
final Map<String, ObjectNode> modules = Optional.ofNullable(auctionContext)
193-
.map(AuctionContext::getAccount)
191+
private GreenbidsConfig parseAccountConfig(Account account) {
192+
return Optional.ofNullable(account)
194193
.map(Account::getAnalytics)
195194
.map(AccountAnalyticsConfig::getModules)
195+
.map(analyticsModules -> analyticsModules.get(name()))
196+
.map(this::toGreenbidsConfig)
196197
.orElse(null);
197-
198-
GreenbidsPrebidExt greenbidsPrebidExt = null;
199-
if (modules != null && modules.containsKey(BID_REQUEST_ANALYTICS_EXTENSION_NAME)) {
200-
final ObjectNode moduleConfig = modules.get(BID_REQUEST_ANALYTICS_EXTENSION_NAME);
201-
greenbidsPrebidExt = toGreenbidsPrebidExt(moduleConfig);
202-
}
203-
204-
return greenbidsPrebidExt;
205198
}
206199

207-
private GreenbidsPrebidExt toGreenbidsPrebidExt(ObjectNode adapterNode) {
200+
private GreenbidsConfig toGreenbidsConfig(ObjectNode adapterNode) {
208201
try {
209-
return jacksonMapper.mapper().treeToValue(adapterNode, GreenbidsPrebidExt.class);
202+
return jacksonMapper.mapper().treeToValue(adapterNode, GreenbidsConfig.class);
210203
} catch (JsonProcessingException e) {
211204
throw new PreBidException("Error decoding bid request analytics extension: " + e.getMessage(), e);
212205
}
@@ -309,7 +302,7 @@ private CommonMessage createBidMessage(
309302
BidResponse bidResponse,
310303
String greenbidsId,
311304
String billingId,
312-
GreenbidsPrebidExt greenbidsImpExt,
305+
GreenbidsConfig greenbidsImpExt,
313306
Map<String, Ortb2ImpExtResult> analyticsResultFromAnalyticsTag) {
314307
final Optional<BidRequest> bidRequest = Optional.ofNullable(auctionContext.getBidRequest());
315308

src/main/java/org/prebid/server/analytics/reporter/greenbids/model/GreenbidsPrebidExt.java renamed to src/main/java/org/prebid/server/analytics/reporter/greenbids/model/GreenbidsConfig.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@
44
import lombok.Value;
55

66
@Value(staticConstructor = "of")
7-
public class GreenbidsPrebidExt {
8-
9-
Boolean enabled;
7+
public class GreenbidsConfig {
108

119
String pbuid;
1210

0 commit comments

Comments
 (0)