Skip to content

Commit d2129ab

Browse files
authored
Ogury: Enable in app traffic (#3975)
1 parent 9a2fead commit d2129ab

3 files changed

Lines changed: 61 additions & 6 deletions

File tree

src/main/java/org/prebid/server/bidder/ogury/OguryBidder.java

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,17 @@ public Result<List<HttpRequest<BidRequest>>> makeHttpRequests(BidRequest bidRequ
7070
}
7171
}
7272

73-
if (!isValidRequestKeys(bidRequest, impsWithOguryParams)) {
74-
errors.add(BidderError.badInput(
75-
"Invalid request. assetKey/adUnitId or request.site.publisher.id required"));
76-
return Result.withErrors(errors);
73+
if (CollectionUtils.isEmpty(impsWithOguryParams)) {
74+
if (bidRequest.getApp() != null) {
75+
errors.add(BidderError.badInput("Invalid request. assetKey/adUnitId required"));
76+
return Result.withErrors(errors);
77+
}
78+
// for "site" request we can serve ads with just publisher.id
79+
if (!hasPublisherId(bidRequest)) {
80+
errors.add(BidderError.badInput(
81+
"Invalid request. assetKey/adUnitId or request.site.publisher.id required"));
82+
return Result.withErrors(errors);
83+
}
7784
}
7885

7986
final BidRequest modifiedBidRequest = bidRequest.toBuilder()
@@ -137,8 +144,8 @@ private boolean hasOguryParams(Imp imp) {
137144
&& impExtBidderHoist.has(PREBID_FIELD_ADUNIT_ID);
138145
}
139146

140-
private boolean isValidRequestKeys(BidRequest request, List<Imp> impsWithOguryParams) {
141-
return !CollectionUtils.isEmpty(impsWithOguryParams) || Optional.ofNullable(request.getSite())
147+
private boolean hasPublisherId(BidRequest request) {
148+
return Optional.ofNullable(request.getSite())
142149
.map(Site::getPublisher)
143150
.map(Publisher::getId)
144151
.isPresent();

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ adapters:
88
maintainer-email: deliveryservices@ogury.co
99
site-media-types:
1010
- banner
11+
app-media-types:
12+
- banner
1113
vendor-id: 31
1214
usersync:
1315
cookie-family-name: ogury

src/test/java/org/prebid/server/bidder/ogury/OguryBidderTest.java

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.fasterxml.jackson.core.JsonProcessingException;
44
import com.fasterxml.jackson.databind.node.ObjectNode;
5+
import com.iab.openrtb.request.App;
56
import com.iab.openrtb.request.BidRequest;
67
import com.iab.openrtb.request.Device;
78
import com.iab.openrtb.request.Imp;
@@ -191,6 +192,47 @@ public void makeHttpRequestsShouldNotSendImpsWhenHasNotPublisherIdAndImpsWithOgu
191192
BidderError.badInput("Invalid request. assetKey/adUnitId or request.site.publisher.id required"));
192193
}
193194

195+
@Test
196+
public void makeHttpRequestsAppShouldSendOnlyImpsWithOguryParamsIfPresent() {
197+
// given
198+
final BidRequest bidrequest = givenBidRequest(
199+
bidRequest -> bidRequest.app(givenApp()),
200+
givenImp(imp -> imp.id("without_ogury_keys").ext(givenEmptyImpExt())),
201+
givenImp(imp -> imp.id("with_ogury_keys").ext(givenImpExtWithOguryKeys())));
202+
203+
// when
204+
final Result<List<HttpRequest<BidRequest>>> result = target.makeHttpRequests(bidrequest);
205+
206+
// then
207+
assertThat(result.getValue()).hasSize(1)
208+
.extracting(HttpRequest::getPayload)
209+
.flatExtracting(BidRequest::getImp)
210+
.extracting(Imp::getId)
211+
.containsExactly("with_ogury_keys");
212+
213+
assertThat(result.getErrors()).isEmpty();
214+
}
215+
216+
@Test
217+
public void makeHttpRequestsAppShouldNotSendImpsWhenImpsWithOguryIsEmpty() {
218+
// given
219+
final ObjectNode emptyImpExt = givenEmptyImpExt();
220+
221+
final BidRequest bidrequest = givenBidRequest(
222+
bidRequest -> bidRequest.app(givenApp()),
223+
givenImp(imp -> imp.id("id1").ext(emptyImpExt)),
224+
givenImp(imp -> imp.id("id2").ext(emptyImpExt)));
225+
226+
// when
227+
final Result<List<HttpRequest<BidRequest>>> result = target.makeHttpRequests(bidrequest);
228+
229+
// then
230+
assertThat(result.getValue()).isEmpty();
231+
232+
assertThat(result.getErrors()).containsExactly(
233+
BidderError.badInput("Invalid request. assetKey/adUnitId required"));
234+
}
235+
194236
@Test
195237
public void makeHttpRequestsShouldCopyImpIdToTagId() {
196238
// given
@@ -564,6 +606,10 @@ private Site givenSite() {
564606
.build();
565607
}
566608

609+
private App givenApp() {
610+
return App.builder().bundle("app_bundle").build();
611+
}
612+
567613
private ObjectNode givenEmptyImpExt() {
568614
final ObjectNode ext = mapper.createObjectNode();
569615
ext.putIfAbsent("bidder", mapper.createObjectNode());

0 commit comments

Comments
 (0)