Skip to content

Commit f4ef80b

Browse files
authored
Merge branch 'master' into New-Adapter-Adinify-allias-of-SmartHub-#3784
2 parents 03df0de + d9a6458 commit f4ef80b

25 files changed

+477
-23
lines changed

src/main/java/org/prebid/server/bidder/admatic/AdmaticBidder.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22

33
import com.fasterxml.jackson.core.type.TypeReference;
44
import com.iab.openrtb.request.BidRequest;
5+
import com.iab.openrtb.request.Device;
56
import com.iab.openrtb.request.Imp;
67
import com.iab.openrtb.response.Bid;
78
import com.iab.openrtb.response.BidResponse;
89
import com.iab.openrtb.response.SeatBid;
10+
import io.vertx.core.MultiMap;
911
import org.apache.commons.collections4.CollectionUtils;
1012
import org.prebid.server.bidder.Bidder;
1113
import org.prebid.server.bidder.model.BidderBid;
@@ -55,7 +57,11 @@ public Result<List<HttpRequest<BidRequest>>> makeHttpRequests(BidRequest request
5557
try {
5658
final AdmaticImpExt impExt = parseImpExt(imp);
5759
final BidRequest modifiedBidRequest = request.toBuilder().imp(Collections.singletonList(imp)).build();
58-
requests.add(BidderUtil.defaultRequest(modifiedBidRequest, resolveEndpoint(impExt), mapper));
60+
requests.add(BidderUtil.defaultRequest(
61+
modifiedBidRequest,
62+
headers(modifiedBidRequest.getDevice()),
63+
resolveEndpoint(impExt),
64+
mapper));
5965
} catch (PreBidException e) {
6066
errors.add(BidderError.badInput(e.getMessage()));
6167
}
@@ -76,6 +82,18 @@ private String resolveEndpoint(AdmaticImpExt impExt) {
7682
return endpointUrl.replace(HOST_MACRO, HttpUtil.encodeUrl(impExt.getHost()));
7783
}
7884

85+
private MultiMap headers(Device device) {
86+
final MultiMap headers = HttpUtil.headers();
87+
88+
if (device != null) {
89+
HttpUtil.addHeaderIfValueIsNotEmpty(headers, HttpUtil.X_FORWARDED_FOR_HEADER, device.getIpv6());
90+
HttpUtil.addHeaderIfValueIsNotEmpty(headers, HttpUtil.X_FORWARDED_FOR_HEADER, device.getIp());
91+
HttpUtil.addHeaderIfValueIsNotEmpty(headers, HttpUtil.USER_AGENT_HEADER, device.getUa());
92+
}
93+
94+
return headers;
95+
}
96+
7997
@Override
8098
public Result<List<BidderBid>> makeBids(BidderCall<BidRequest> httpCall, BidRequest bidRequest) {
8199
try {

src/main/java/org/prebid/server/bidder/nextmillennium/NextMillenniumBidder.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.prebid.server.proto.openrtb.ext.response.BidType;
3434
import org.prebid.server.util.HttpUtil;
3535
import org.prebid.server.util.ObjectUtil;
36+
import org.prebid.server.version.PrebidVersionProvider;
3637

3738
import java.util.ArrayList;
3839
import java.util.Collection;
@@ -45,16 +46,21 @@ public class NextMillenniumBidder implements Bidder<BidRequest> {
4546
private static final TypeReference<ExtPrebid<?, ExtImpNextMillennium>> NEXTMILLENNIUM_EXT_TYPE_REFERENCE =
4647
new TypeReference<>() {
4748
};
49+
private static final String NM_ADAPTER_VERSION = "v1.0.0";
4850

4951
private final String endpointUrl;
5052
private final JacksonMapper mapper;
5153
private final List<String> nmmFlags;
54+
private final PrebidVersionProvider versionProvider;
5255

53-
public NextMillenniumBidder(String endpointUrl, JacksonMapper mapper, List<String> nmmFlags) {
56+
public NextMillenniumBidder(String endpointUrl,
57+
JacksonMapper mapper,
58+
List<String> nmmFlags,
59+
PrebidVersionProvider versionProvider) {
5460
this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl));
5561
this.mapper = Objects.requireNonNull(mapper);
5662
this.nmmFlags = nmmFlags;
57-
63+
this.versionProvider = Objects.requireNonNull(versionProvider);
5864
}
5965

6066
@Override
@@ -149,10 +155,15 @@ private static String formatSize(Integer w, Integer h) {
149155
private ObjectNode createImpExt(ExtRequestPrebid prebid) {
150156
final ObjectNode impExt = mapper.mapper().createObjectNode();
151157
impExt.set("prebid", mapper.mapper().valueToTree(prebid));
158+
159+
final ObjectNode nextMillenniumNode = impExt.putObject("nextMillennium");
152160
if (CollectionUtils.isNotEmpty(nmmFlags)) {
153-
impExt.putObject("nextMillennium")
154-
.set("nmmFlags", mapper.mapper().valueToTree(nmmFlags));
161+
nextMillenniumNode.set("nmmFlags", mapper.mapper().valueToTree(nmmFlags));
155162
}
163+
164+
nextMillenniumNode.put("nm_version", NM_ADAPTER_VERSION);
165+
nextMillenniumNode.put("server_version", versionProvider.getNameVersionRecord());
166+
156167
return impExt;
157168
}
158169

src/main/java/org/prebid/server/spring/config/bidder/NextMillenniumConfiguration.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.prebid.server.spring.config.bidder.util.BidderDepsAssembler;
1111
import org.prebid.server.spring.config.bidder.util.UsersyncerCreator;
1212
import org.prebid.server.spring.env.YamlPropertySourceFactory;
13+
import org.prebid.server.version.PrebidVersionProvider;
1314
import org.springframework.beans.factory.annotation.Value;
1415
import org.springframework.boot.context.properties.ConfigurationProperties;
1516
import org.springframework.context.annotation.Bean;
@@ -34,6 +35,7 @@ NextMillenniumConfigurationProperties configurationProperties() {
3435
@Bean
3536
BidderDeps nextMillenniumBidderDeps(NextMillenniumConfigurationProperties nextMillenniumConfigurationProperties,
3637
@NotBlank @Value("${external-url}") String externalUrl,
38+
PrebidVersionProvider prebidVersionProvider,
3739
JacksonMapper mapper) {
3840

3941
return BidderDepsAssembler.<NextMillenniumConfigurationProperties>forBidder(BIDDER_NAME)
@@ -42,7 +44,8 @@ BidderDeps nextMillenniumBidderDeps(NextMillenniumConfigurationProperties nextMi
4244
.bidderCreator(config -> new NextMillenniumBidder(
4345
config.getEndpoint(),
4446
mapper,
45-
config.getExtraInfo().getNmmFlags())
47+
config.getExtraInfo().getNmmFlags(),
48+
prebidVersionProvider)
4649
).assemble();
4750
}
4851

src/main/resources/bidder-config/admatic.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
adapters:
22
admatic:
33
endpoint: http://pbs.admatic.com.tr?host={{Host}}
4+
aliases:
5+
adt:
6+
enabled: false
7+
meta-info:
8+
maintainer-email: publisher@adtarget.com.tr
9+
vendor-id: 779
410
meta-info:
511
maintainer-email: prebid@admatic.com.tr
612
app-media-types:

src/main/resources/bidder-config/copper6ssp.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
adapters:
22
copper6ssp:
3-
endpoint: https://endpoint.copper6.com/
3+
endpoint: https://endpoint.copper6.com/pserver
44
meta-info:
55
maintainer-email: info@copper6.com
66
app-media-types:

src/main/resources/bidder-config/pubrise.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
adapters:
22
pubrise:
3-
endpoint: https://backend.pubrise.ai/
3+
endpoint: https://backend.pubrise.ai/pserver
44
meta-info:
55
maintainer-email: prebid@pubrise.ai
66
app-media-types:

src/main/resources/bidder-config/smarthub.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ adapters:
2020
adinify:
2121
enabled: false
2222
endpoint: https://adinify-prebid.attekmi.com/pbserver/?seat={{AccountID}}&token={{SourceId}}
23+
artechnology:
24+
enabled: false
25+
endpoint: https://artechnology-prebid.attekmi.com/pbserver/?seat={{AccountID}}&token={{SourceId}}
2326
meta-info:
2427
maintainer-email: prebid@attekmi.com
2528
app-media-types:

src/main/resources/bidder-config/sspbc.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
adapters:
22
sspbc:
3-
endpoint: https://ssp.wp.pl/bidder/
3+
endpoint: https://ssp.wp.pl/v1/bidder/prebidserver
44
meta-info:
55
maintainer-email: prebid-dev@grupawp.pl
66
app-media-types:

src/main/resources/bidder-config/undertone.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ adapters:
22
undertone:
33
endpoint: https://ads.undertone.com/rtb
44
endpoint-compression: gzip
5+
ortb-version: "2.6"
56
meta-info:
67
maintainer-email: csop@undertone.com
78
app-media-types:

src/test/java/org/prebid/server/bidder/admatic/AdmaticBidderTest.java

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.iab.openrtb.request.Audio;
55
import com.iab.openrtb.request.Banner;
66
import com.iab.openrtb.request.BidRequest;
7+
import com.iab.openrtb.request.Device;
78
import com.iab.openrtb.request.Imp;
89
import com.iab.openrtb.request.Native;
910
import com.iab.openrtb.request.Video;
@@ -36,6 +37,8 @@
3637
import static org.prebid.server.util.HttpUtil.ACCEPT_HEADER;
3738
import static org.prebid.server.util.HttpUtil.APPLICATION_JSON_CONTENT_TYPE;
3839
import static org.prebid.server.util.HttpUtil.CONTENT_TYPE_HEADER;
40+
import static org.prebid.server.util.HttpUtil.USER_AGENT_HEADER;
41+
import static org.prebid.server.util.HttpUtil.X_FORWARDED_FOR_HEADER;
3942
import static org.springframework.util.MimeTypeUtils.APPLICATION_JSON_VALUE;
4043

4144
public class AdmaticBidderTest extends VertxTest {
@@ -95,10 +98,34 @@ public void makeHttpRequestsShouldReturnExpectedHeaders() {
9598
// then
9699
assertThat(result.getValue()).hasSize(1).first()
97100
.extracting(HttpRequest::getHeaders)
98-
.satisfies(headers -> assertThat(headers.get(CONTENT_TYPE_HEADER))
99-
.isEqualTo(APPLICATION_JSON_CONTENT_TYPE))
100-
.satisfies(headers -> assertThat(headers.get(ACCEPT_HEADER))
101-
.isEqualTo(APPLICATION_JSON_VALUE));
101+
.satisfies(headers -> {
102+
assertThat(headers.get(CONTENT_TYPE_HEADER)).isEqualTo(APPLICATION_JSON_CONTENT_TYPE);
103+
assertThat(headers.get(ACCEPT_HEADER)).isEqualTo(APPLICATION_JSON_VALUE);
104+
});
105+
assertThat(result.getErrors()).isEmpty();
106+
}
107+
108+
@Test
109+
public void makeHttpRequestsShouldReturnRequestsWithHeadersIfDeviceIsPresent() {
110+
// given
111+
final BidRequest bidRequest = givenBidRequest(identity())
112+
.toBuilder()
113+
.device(Device.builder().ua("ua").ip("ip").ipv6("ipv6").build())
114+
.build();
115+
116+
// when
117+
final Result<List<HttpRequest<BidRequest>>> result = target.makeHttpRequests(bidRequest);
118+
119+
// then
120+
assertThat(result.getErrors()).isEmpty();
121+
assertThat(result.getValue()).hasSize(1).first()
122+
.extracting(HttpRequest::getHeaders)
123+
.satisfies(headers -> {
124+
assertThat(headers.get(CONTENT_TYPE_HEADER)).isEqualTo(APPLICATION_JSON_CONTENT_TYPE);
125+
assertThat(headers.get(ACCEPT_HEADER)).isEqualTo(APPLICATION_JSON_VALUE);
126+
assertThat(headers.get(USER_AGENT_HEADER)).isEqualTo("ua");
127+
assertThat(headers.get(X_FORWARDED_FOR_HEADER)).isEqualTo("ipv6");
128+
});
102129
assertThat(result.getErrors()).isEmpty();
103130
}
104131

0 commit comments

Comments
 (0)