Skip to content

Commit

Permalink
Core: Add Greenbids Analytics Adapter (#3096)
Browse files Browse the repository at this point in the history
  • Loading branch information
EvgeniiMunin authored Jun 26, 2024
1 parent 49e6a7a commit a2e376c
Show file tree
Hide file tree
Showing 13 changed files with 1,208 additions and 0 deletions.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package org.prebid.server.analytics.reporter.greenbids.model;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Value;

import java.util.List;

@Builder(toBuilder = true)
@Value
public class CommonMessage {

private final String version;

@JsonProperty("auctionId")
private final String auctionId;

private final String referrer;

private final double sampling;

@JsonProperty("prebidServer")
private final String prebidServer;

@JsonProperty("greenbidsId")
private final String greenbidsId;

private final String pbuid;

@JsonProperty("billingId")
private final String billingId;

@JsonProperty("adUnits")
private final List<GreenbidsAdUnit> adUnits;

@JsonProperty("auctionElapsed")
private final Long auctionElapsed;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package org.prebid.server.analytics.reporter.greenbids.model;

import lombok.Builder;
import lombok.Value;

import java.util.List;

@Builder(toBuilder = true)
@Value
public class ExtBanner {

List<List<Integer>> sizes;

Integer pos;

String name;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package org.prebid.server.analytics.reporter.greenbids.model;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Value;

import java.util.List;

@Builder(toBuilder = true)
@Value
public class GreenbidsAdUnit {

String code;

@JsonProperty("unifiedCode")
GreenbidsUnifiedCode unifiedCode;

@JsonProperty("mediaTypes")
MediaTypes mediaTypes;

List<GreenbidsBids> bids;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package org.prebid.server.analytics.reporter.greenbids.model;

import lombok.Builder;
import lombok.Value;

@Builder(toBuilder = true)
@Value
public class GreenbidsAnalyticsProperties {

Double exploratorySamplingSplit;

String analyticsServerVersion;

String analyticsServerUrl;

Long configurationRefreshDelayMs;

Long timeoutMs;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package org.prebid.server.analytics.reporter.greenbids.model;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.iab.openrtb.response.Bid;
import lombok.Builder;
import lombok.Value;
import org.prebid.server.auction.model.BidRejectionReason;
import org.prebid.server.proto.openrtb.ext.response.seatnonbid.NonBid;

@Builder(toBuilder = true)
@Value
public class GreenbidsBids {

String bidder;

@JsonProperty("isTimeout")
Boolean isTimeout;

@JsonProperty("hasBid")
Boolean hasBid;

public static GreenbidsBids ofBid(String seat, Bid bid) {
return GreenbidsBids.builder()
.bidder(seat)
.isTimeout(false)
.hasBid(bid != null)
.build();
}

public static GreenbidsBids ofNonBid(String seat, NonBid nonBid) {
return GreenbidsBids.builder()
.bidder(seat)
.isTimeout(nonBid.getStatusCode() == BidRejectionReason.TIMED_OUT)
.hasBid(false)
.build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package org.prebid.server.analytics.reporter.greenbids.model;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Value;

@Value(staticConstructor = "of")
public class GreenbidsPrebidExt {

String pbuid;

@JsonProperty("greenbidsSampling")
Double greenbidsSampling;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package org.prebid.server.analytics.reporter.greenbids.model;

public enum GreenbidsSource {

GPID_SOURCE("gpidSource"),
STORED_REQUEST_ID_SOURCE("storedRequestIdSource"),
AD_UNIT_CODE_SOURCE("adUnitCodeSource");

private final String value;

GreenbidsSource(String value) {
this.value = value;
}

public String getValue() {
return value;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package org.prebid.server.analytics.reporter.greenbids.model;

import lombok.Value;

@Value(staticConstructor = "of")
public class GreenbidsUnifiedCode {

String value;

String source;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package org.prebid.server.analytics.reporter.greenbids.model;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.iab.openrtb.request.Native;
import com.iab.openrtb.request.Video;
import lombok.Value;

@Value(staticConstructor = "of")
public class MediaTypes {

ExtBanner banner;

Video video;

@JsonProperty("native")
Native nativeObject;
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,16 @@
import org.apache.commons.collections4.ListUtils;
import org.prebid.server.analytics.AnalyticsReporter;
import org.prebid.server.analytics.reporter.AnalyticsReporterDelegator;
import org.prebid.server.analytics.reporter.greenbids.GreenbidsAnalyticsReporter;
import org.prebid.server.analytics.reporter.greenbids.model.GreenbidsAnalyticsProperties;
import org.prebid.server.analytics.reporter.log.LogAnalyticsReporter;
import org.prebid.server.analytics.reporter.pubstack.PubstackAnalyticsReporter;
import org.prebid.server.analytics.reporter.pubstack.model.PubstackAnalyticsProperties;
import org.prebid.server.auction.privacy.enforcement.TcfEnforcement;
import org.prebid.server.auction.privacy.enforcement.mask.UserFpdActivityMask;
import org.prebid.server.json.JacksonMapper;
import org.prebid.server.metric.Metrics;
import org.prebid.server.version.PrebidVersionProvider;
import org.prebid.server.vertx.httpclient.HttpClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
Expand All @@ -23,6 +26,7 @@
import org.springframework.validation.annotation.Validated;

import jakarta.validation.constraints.NotNull;
import java.time.Clock;
import java.util.List;

@Configuration
Expand Down Expand Up @@ -52,6 +56,54 @@ LogAnalyticsReporter logAnalyticsReporter(JacksonMapper mapper) {
return new LogAnalyticsReporter(mapper);
}

@Configuration
@ConditionalOnProperty(prefix = "analytics.greenbids", name = "enabled", havingValue = "true")
public static class GreenbidsAnalyticsConfiguration {

@Bean
GreenbidsAnalyticsReporter greenbidsAnalyticsReporter(
GreenbidsAnalyticsConfigurationProperties greenbidsAnalyticsConfigurationProperties,
JacksonMapper jacksonMapper,
HttpClient httpClient,
Clock clock,
PrebidVersionProvider prebidVersionProvider) {
return new GreenbidsAnalyticsReporter(
greenbidsAnalyticsConfigurationProperties.toComponentProperties(),
jacksonMapper,
httpClient,
clock,
prebidVersionProvider);
}

@Bean
@ConfigurationProperties(prefix = "analytics.greenbids")
GreenbidsAnalyticsConfigurationProperties greenbidsAnalyticsConfigurationProperties() {
return new GreenbidsAnalyticsConfigurationProperties();
}

@Validated
@NoArgsConstructor
@Data
private static class GreenbidsAnalyticsConfigurationProperties {
String analyticsServerVersion;

String analyticsServer;

Double exploratorySamplingSplit;

Long timeoutMs;

public GreenbidsAnalyticsProperties toComponentProperties() {
return GreenbidsAnalyticsProperties.builder()
.exploratorySamplingSplit(getExploratorySamplingSplit())
.analyticsServerVersion(getAnalyticsServerVersion())
.analyticsServerUrl(getAnalyticsServer())
.timeoutMs(getTimeoutMs())
.build();
}
}
}

@Configuration
@ConditionalOnProperty(prefix = "analytics.pubstack", name = "enabled", havingValue = "true")
public static class PubstackAnalyticsConfiguration {
Expand Down
5 changes: 5 additions & 0 deletions src/main/resources/application.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -293,5 +293,10 @@ analytics:
size-bytes: 2097152
count: 100
report-ttl-ms: 900000
greenbids:
analytics-server-version: "2.2.0"
analytics-server: http://localhost:8090
exploratory-sampling-split: 0.9
timeout-ms: 10000
price-floors:
enabled: false
Loading

0 comments on commit a2e376c

Please sign in to comment.