-
Notifications
You must be signed in to change notification settings - Fork 193
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
NextMillennium: Adapter and server version #3814
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -28,33 +28,41 @@ | |
import org.prebid.server.proto.openrtb.ext.ExtPrebid; | ||
import org.prebid.server.proto.openrtb.ext.request.ExtRequest; | ||
import org.prebid.server.proto.openrtb.ext.request.ExtRequestPrebid; | ||
import org.prebid.server.proto.openrtb.ext.request.ExtRequestPrebidServer; | ||
import org.prebid.server.proto.openrtb.ext.request.ExtStoredRequest; | ||
import org.prebid.server.proto.openrtb.ext.request.nextmillennium.ExtImpNextMillennium; | ||
import org.prebid.server.proto.openrtb.ext.request.nextmillennium.ExtRequestNextMillennium; | ||
import org.prebid.server.proto.openrtb.ext.response.BidType; | ||
import org.prebid.server.util.HttpUtil; | ||
import org.prebid.server.util.ObjectUtil; | ||
import org.prebid.server.version.PrebidVersionProvider; | ||
|
||
import java.util.ArrayList; | ||
import java.util.Collection; | ||
import java.util.List; | ||
import java.util.Objects; | ||
import java.util.Optional; | ||
|
||
public class NextMillenniumBidder implements Bidder<BidRequest> { | ||
|
||
private static final TypeReference<ExtPrebid<?, ExtImpNextMillennium>> NEXTMILLENNIUM_EXT_TYPE_REFERENCE = | ||
new TypeReference<>() { | ||
}; | ||
|
||
private static final String NM_ADAPTER_VERSION = "v1.0.0"; | ||
|
||
private final String endpointUrl; | ||
private final JacksonMapper mapper; | ||
private final List<String> nmmFlags; | ||
private final PrebidVersionProvider versionProvider; | ||
|
||
public NextMillenniumBidder(String endpointUrl, JacksonMapper mapper, List<String> nmmFlags) { | ||
public NextMillenniumBidder(String endpointUrl, | ||
JacksonMapper mapper, | ||
List<String> nmmFlags, | ||
PrebidVersionProvider versionProvider) { | ||
this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); | ||
this.mapper = Objects.requireNonNull(mapper); | ||
this.nmmFlags = nmmFlags; | ||
|
||
this.versionProvider = Objects.requireNonNull(versionProvider); | ||
} | ||
|
||
@Override | ||
|
@@ -86,27 +94,41 @@ private ExtImpNextMillennium convertExt(ObjectNode impExt) { | |
|
||
private BidRequest updateBidRequest(BidRequest bidRequest, ExtImpNextMillennium ext) { | ||
final ExtStoredRequest storedRequest = ExtStoredRequest.of(resolveStoredRequestId(bidRequest, ext)); | ||
final ExtRequest requestExt = bidRequest.getExt(); | ||
final ExtRequestPrebid existingPrebid = requestExt != null ? requestExt.getPrebid() : null; | ||
final ExtRequestPrebidServer existingServer = existingPrebid != null ? existingPrebid.getServer() : null; | ||
|
||
final ExtRequestPrebid createdExtRequestPrebid = ExtRequestPrebid.builder() | ||
.storedrequest(storedRequest) | ||
.server(existingServer) | ||
.build(); | ||
|
||
final ExtRequestPrebid extRequestPrebid = Optional.ofNullable(bidRequest) | ||
.map(BidRequest::getExt) | ||
.map(ExtRequest::getPrebid) | ||
.map(prebid -> prebid.toBuilder().storedrequest(storedRequest).build()) | ||
.orElse(createdExtRequestPrebid); | ||
final ExtRequest extRequest = ExtRequest.of(createdExtRequestPrebid); | ||
|
||
return bidRequest.toBuilder() | ||
.imp(updateImps(bidRequest, createdExtRequestPrebid)) | ||
.ext(ExtRequest.of(extRequestPrebid)) | ||
final ObjectNode nextMillenniumNode = mapper.mapper().valueToTree( | ||
ExtRequestNextMillennium.of(nmmFlags, NM_ADAPTER_VERSION, versionProvider.getNameVersionRecord())); | ||
|
||
extRequest.addProperty("nextMillennium", nextMillenniumNode); | ||
|
||
final Imp firstImp = bidRequest.getImp().getFirst(); | ||
final ObjectNode updatedImpExt = mapper.mapper().createObjectNode(); | ||
updatedImpExt.set("nextMillennium", nextMillenniumNode); | ||
|
||
final ObjectNode prebidNode = mapper.mapper().createObjectNode(); | ||
prebidNode.set("storedrequest", mapper.mapper().valueToTree(storedRequest)); | ||
updatedImpExt.set("prebid", prebidNode); | ||
|
||
final Imp updatedImp = firstImp.toBuilder() | ||
.ext(updatedImpExt) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nmmFlags should be added to the imp.ext as well |
||
.build(); | ||
} | ||
|
||
private List<Imp> updateImps(BidRequest bidRequest, ExtRequestPrebid extRequestPrebid) { | ||
return bidRequest.getImp().stream() | ||
.map(imp -> imp.toBuilder().ext(createImpExt(extRequestPrebid)).build()) | ||
.toList(); | ||
final List<Imp> updatedImps = new ArrayList<>(bidRequest.getImp()); | ||
updatedImps.set(0, updatedImp); | ||
|
||
return bidRequest.toBuilder() | ||
.imp(updatedImps) | ||
.ext(extRequest) | ||
.build(); | ||
} | ||
|
||
private static String resolveStoredRequestId(BidRequest bidRequest, ExtImpNextMillennium extImpNextMillennium) { | ||
|
@@ -146,16 +168,6 @@ private static String formatSize(Integer w, Integer h) { | |
: null; | ||
} | ||
|
||
private ObjectNode createImpExt(ExtRequestPrebid prebid) { | ||
final ObjectNode impExt = mapper.mapper().createObjectNode(); | ||
impExt.set("prebid", mapper.mapper().valueToTree(prebid)); | ||
if (CollectionUtils.isNotEmpty(nmmFlags)) { | ||
impExt.putObject("nextMillennium") | ||
.set("nmmFlags", mapper.mapper().valueToTree(nmmFlags)); | ||
} | ||
return impExt; | ||
} | ||
|
||
private HttpRequest<BidRequest> makeHttpRequest(BidRequest bidRequest) { | ||
return HttpRequest.<BidRequest>builder() | ||
.method(HttpMethod.POST) | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
package org.prebid.server.proto.openrtb.ext.request.nextmillennium; | ||
|
||
import com.fasterxml.jackson.annotation.JsonProperty; | ||
import lombok.Value; | ||
|
||
import java.util.List; | ||
|
||
@Value(staticConstructor = "of") | ||
public class ExtRequestNextMillennium { | ||
|
||
@JsonProperty("nmmFlags") | ||
List<String> nmmFlags; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. deserialization is incorrect here There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. still incorrect, it should be |
||
|
||
String nmVersion; | ||
|
||
String serverVersion; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the nextMillenniumNode should have only nmmFlags if it's an imp.ext