Skip to content

Commit 58ee63f

Browse files
author
EvgeniiMunin
committed
transfer greenbidsId in ATag between RTD and analytics adapter
1 parent 165c543 commit 58ee63f

File tree

18 files changed

+349
-17
lines changed

18 files changed

+349
-17
lines changed

extra/modules/confiant-ad-quality/src/main/java/org/prebid/server/hooks/modules/com/confiant/adquality/v1/ConfiantAdQualityBidResponsesScanHook.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,8 @@ private InvocationResult<AllProcessedBidResponsesPayload> toInvocationResult(
119119
.payloadUpdate(payload -> AllProcessedBidResponsesPayloadImpl.of(
120120
Stream.concat(bidderResponsesWithoutIssues.stream(), notScannedBidderResponses.stream()).toList()));
121121

122+
System.out.println("ConfiantAdQualityBidResponsesScanHook/ InvocationResult: " + resultBuilder.build());
123+
122124
return resultBuilder.build();
123125
}
124126

extra/modules/greenbids-real-time-data/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>org.prebid.server.hooks.modules</groupId>
88
<artifactId>all-modules</artifactId>
9-
<version>3.3.0-SNAPSHOT</version>
9+
<version>3.4.0-SNAPSHOT</version>
1010
</parent>
1111

1212
<artifactId>greenbids-real-time-data</artifactId>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package org.prebid.server.hooks.modules.greenbids.real.time.data.model;
2+
3+
import lombok.Value;
4+
5+
import java.util.Map;
6+
7+
@Value(staticConstructor = "of")
8+
public class AnalyticsResult {
9+
10+
String status;
11+
12+
Map<String, Object> values;
13+
14+
String bidder;
15+
16+
String impId;
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package org.prebid.server.hooks.modules.greenbids.real.time.data.model;
2+
3+
import lombok.Value;
4+
5+
import java.util.List;
6+
7+
@Value(staticConstructor = "of")
8+
public class RtdFilterResult {
9+
10+
String value;
11+
12+
List<AnalyticsResult> analyticsResults;
13+
}

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

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,24 @@
1111
import com.iab.openrtb.request.BidRequest;
1212
import com.iab.openrtb.request.Imp;
1313
import io.vertx.core.Future;
14+
import org.apache.commons.collections4.CollectionUtils;
1415
import org.prebid.server.auction.model.AuctionContext;
1516
import org.prebid.server.exception.PreBidException;
1617
import org.prebid.server.hooks.execution.v1.auction.AuctionRequestPayloadImpl;
18+
import org.prebid.server.hooks.modules.greenbids.real.time.data.model.AnalyticsResult;
1719
import org.prebid.server.hooks.modules.greenbids.real.time.data.model.GreenbidsUserAgent;
1820
import org.prebid.server.hooks.modules.greenbids.real.time.data.model.OnnxModelRunner;
1921
import org.prebid.server.hooks.modules.greenbids.real.time.data.model.ThrottlingMessage;
2022
import org.prebid.server.hooks.modules.greenbids.real.time.data.v1.model.InvocationResultImpl;
23+
import org.prebid.server.hooks.modules.greenbids.real.time.data.v1.model.analytics.ActivityImpl;
24+
import org.prebid.server.hooks.modules.greenbids.real.time.data.v1.model.analytics.AppliedToImpl;
25+
import org.prebid.server.hooks.modules.greenbids.real.time.data.v1.model.analytics.ResultImpl;
26+
import org.prebid.server.hooks.modules.greenbids.real.time.data.v1.model.analytics.TagsImpl;
2127
import org.prebid.server.hooks.v1.InvocationAction;
2228
import org.prebid.server.hooks.v1.InvocationResult;
2329
import org.prebid.server.hooks.v1.InvocationStatus;
30+
import org.prebid.server.hooks.v1.analytics.Result;
31+
import org.prebid.server.hooks.v1.analytics.Tags;
2432
import org.prebid.server.hooks.v1.auction.AuctionInvocationContext;
2533
import org.prebid.server.hooks.v1.auction.AuctionRequestPayload;
2634
import org.prebid.server.hooks.v1.auction.ProcessedAuctionRequestHook;
@@ -31,6 +39,7 @@
3139
import java.time.ZonedDateTime;
3240
import java.util.ArrayList;
3341
import java.util.Arrays;
42+
import java.util.Collections;
3443
import java.util.HashMap;
3544
import java.util.Iterator;
3645
import java.util.List;
@@ -42,7 +51,7 @@
4251
public class GreenbidsRealTimeDataProcessedAuctionRequestHook implements ProcessedAuctionRequestHook {
4352

4453
private static final String CODE = "greenbids-real-time-data-processed-auction-request-hook";
45-
private static final String ACTIVITY = "isKeptInAuction";
54+
private static final String ACTIVITY = "greenbids-filter";
4655
private static final String SUCCESS_STATUS = "success";
4756

4857
private final ObjectMapper mapper;
@@ -149,6 +158,10 @@ public Future<InvocationResult<AuctionRequestPayload>> call(
149158
List<Imp> impsWithFilteredBidders = updateImps(bidRequest, impsBiddersFilterMap);
150159
BidRequest updatedBidRequest = bidRequest.toBuilder().imp(impsWithFilteredBidders).build();
151160

161+
final String greenbidsId = "test-greenbids-id"; //UUID.randomUUID().toString();
162+
163+
final AnalyticsResult analyticsResult = AnalyticsResult.of(
164+
"success", Map.of("greenbidsId", greenbidsId), null, null);
152165

153166
// update invocation result
154167
InvocationResult<AuctionRequestPayload> invocationResult = InvocationResultImpl.<AuctionRequestPayload>builder()
@@ -158,19 +171,52 @@ public Future<InvocationResult<AuctionRequestPayload>> call(
158171
.debugMessages(null)
159172
.analyticsTags(null)
160173
.payloadUpdate(payload -> AuctionRequestPayloadImpl.of(updatedBidRequest))
174+
.analyticsTags(toAnalyticsTags(Collections.singletonList(analyticsResult)))
161175
.build();
162176

163177
System.out.println(
164178
"GreenbidsRealTimeDataProcessedAuctionRequestHook/call" + "\n" +
165179
"impsBiddersFilterMap: " + impsBiddersFilterMap + "\n" +
166180
"impsWithFilteredBidders: " + impsWithFilteredBidders + "\n" +
167181
"updatedBidRequest: " + updatedBidRequest + "\n" +
182+
"AnalyticsTag: " + toAnalyticsTags(Collections.singletonList(analyticsResult)) + "\n" +
168183
"invocationResult: " + invocationResult
169184
);
170185

171186
return Future.succeededFuture(invocationResult);
172187
}
173188

189+
private Tags toAnalyticsTags(List<AnalyticsResult> analyticsResults) {
190+
if (CollectionUtils.isEmpty(analyticsResults)) {
191+
return null;
192+
}
193+
194+
return TagsImpl.of(Collections.singletonList(ActivityImpl.of(
195+
ACTIVITY,
196+
SUCCESS_STATUS,
197+
toResults(analyticsResults))));
198+
}
199+
200+
private List<Result> toResults(List<AnalyticsResult> analyticsResults) {
201+
return analyticsResults.stream()
202+
.map(this::toResult)
203+
.toList();
204+
}
205+
206+
private Result toResult(AnalyticsResult analyticsResult) {
207+
return ResultImpl.of(
208+
analyticsResult.getStatus(),
209+
toObjectNode(analyticsResult.getValues()),
210+
AppliedToImpl.builder()
211+
.bidders(Collections.singletonList(analyticsResult.getBidder()))
212+
.impIds(Collections.singletonList(analyticsResult.getImpId()))
213+
.build());
214+
}
215+
216+
private ObjectNode toObjectNode(Map<String, Object> values) {
217+
return values != null ? mapper.valueToTree(values) : null;
218+
}
219+
174220
private List<Imp> updateImps(BidRequest bidRequest, Map<String, Map<String, Boolean>> impsBiddersFilterMap) {
175221
return bidRequest.getImp().stream()
176222
.map(imp -> updateImp(imp, impsBiddersFilterMap.get(imp.getId())))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package org.prebid.server.hooks.modules.greenbids.real.time.data.v1.model.analytics;
2+
3+
import lombok.Value;
4+
import lombok.experimental.Accessors;
5+
import org.prebid.server.hooks.v1.analytics.Activity;
6+
import org.prebid.server.hooks.v1.analytics.Result;
7+
8+
import java.util.List;
9+
10+
@Accessors(fluent = true)
11+
@Value(staticConstructor = "of")
12+
public class ActivityImpl implements Activity {
13+
14+
String name;
15+
16+
String status;
17+
18+
List<Result> results;
19+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package org.prebid.server.hooks.modules.greenbids.real.time.data.v1.model.analytics;
2+
3+
import lombok.Builder;
4+
import lombok.Value;
5+
import lombok.experimental.Accessors;
6+
import org.prebid.server.hooks.v1.analytics.AppliedTo;
7+
8+
import java.util.List;
9+
10+
@Accessors(fluent = true)
11+
@Value
12+
@Builder
13+
public class AppliedToImpl implements AppliedTo {
14+
15+
List<String> impIds;
16+
17+
List<String> bidders;
18+
19+
boolean request;
20+
21+
boolean response;
22+
23+
List<String> bidIds;
24+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package org.prebid.server.hooks.modules.greenbids.real.time.data.v1.model.analytics;
2+
3+
import com.fasterxml.jackson.databind.node.ObjectNode;
4+
import lombok.Value;
5+
import lombok.experimental.Accessors;
6+
import org.prebid.server.hooks.v1.analytics.AppliedTo;
7+
import org.prebid.server.hooks.v1.analytics.Result;
8+
9+
@Accessors(fluent = true)
10+
@Value(staticConstructor = "of")
11+
public class ResultImpl implements Result {
12+
String status;
13+
14+
ObjectNode values;
15+
16+
AppliedTo appliedTo;
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.prebid.server.hooks.modules.greenbids.real.time.data.v1.model.analytics;
2+
3+
import lombok.Value;
4+
import lombok.experimental.Accessors;
5+
import org.prebid.server.hooks.v1.analytics.Activity;
6+
import org.prebid.server.hooks.v1.analytics.Tags;
7+
8+
import java.util.List;
9+
10+
@Accessors(fluent = true)
11+
@Value(staticConstructor = "of")
12+
public class TagsImpl implements Tags {
13+
14+
List<Activity> activities;
15+
}

sample/prebid-config-with-module.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ adapters:
1212
enabled: true
1313
metrics:
1414
prefix: prebid
15+
analytics:
16+
greenbids:
17+
enabled: true
1518
cache:
1619
scheme: http
1720
host: localhost

sample/requests/rubicon-storedresponse.json

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,14 @@
1515
"accountId": 1001,
1616
"siteId": 267318,
1717
"zoneId": 1861698
18-
}
18+
},
19+
"appnexus": {
20+
"placementId": 123456
21+
},
22+
"pubmatic": {
23+
"publisherId": "156209",
24+
"adSlot": "slot1@300x250"
25+
}
1926
}}},
2027
"secure": 1,
2128
"banner": {
@@ -37,10 +44,17 @@
3744
},
3845
"ext": {
3946
"prebid": {
47+
"trace": "verbose",
4048
"targeting": {
4149
"includewinners": true,
4250
"includebidderkeys": true
43-
}
51+
},
52+
"analytics": {
53+
"greenbids": {
54+
"pbuid": "PBUID_FROM_GREENBIDS",
55+
"greenbidsSampling": 1.0
56+
}
57+
}
4458
}
4559
}
4660
}

sample/stored/1001-sar-320x50-imp-1.json

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,45 @@
1818
],
1919
"seat": "rubicon",
2020
"group": 0
21+
},
22+
{
23+
"bid": [
24+
{
25+
"h": 50,
26+
"w": 320,
27+
"id": "1",
28+
"adm": "<img src=\"https://files.prebid.org/creatives/prebid320x50.png\">",
29+
"ext": {
30+
"prebid": {
31+
"type": "banner"
32+
}
33+
},
34+
"crid": "888888",
35+
"impid": "1",
36+
"price": 1.05
37+
}
38+
],
39+
"seat": "pubmatic",
40+
"group": 0
41+
},
42+
{
43+
"bid": [
44+
{
45+
"h": 50,
46+
"w": 320,
47+
"id": "1",
48+
"adm": "<img src=\"https://files.prebid.org/creatives/prebid320x50.png\">",
49+
"ext": {
50+
"prebid": {
51+
"type": "banner"
52+
}
53+
},
54+
"crid": "888888",
55+
"impid": "1",
56+
"price": 0.05
57+
}
58+
],
59+
"seat": "appnexus",
60+
"group": 0
2161
}
2262
]

src/main/java/org/prebid/server/analytics/reporter/AnalyticsReporterDelegator.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,9 @@ private <T> void delegateEvent(T event,
120120
// but to be sure lets use getOrDefault
121121
final PrivacyEnforcementAction reporterPrivacyAction = privacyEnforcementActionMap
122122
.getOrDefault(reporterVendorId, PrivacyEnforcementAction.restrictAll());
123-
if (!reporterPrivacyAction.isBlockAnalyticsReport()) {
124-
vertx.runOnContext(ignored -> processEventByReporter(analyticsReporter, updatedEvent));
125-
}
123+
//if (!reporterPrivacyAction.isBlockAnalyticsReport()) {
124+
vertx.runOnContext(ignored -> processEventByReporter(analyticsReporter, updatedEvent));
125+
//}
126126
}
127127
} else {
128128
final Throwable privacyEnforcementException = privacyEnforcementMapResult.cause();

0 commit comments

Comments
 (0)