From 3a264d72c7897a0af7a19c4070ca6bff9b09e0ba Mon Sep 17 00:00:00 2001 From: Nikulin Mikhail Date: Wed, 1 Dec 2021 12:55:24 +0700 Subject: [PATCH 01/82] added adapter --- .../server/bidder/alkimi/AlkimiBidder.java | 90 +++++++++++++++++++ .../ext/request/alkimi/ExtImpAlkimi.java | 13 +++ .../config/bidder/AlkimiConfiguration.java | 51 +++++++++++ src/main/resources/bidder-config/alkimi.yaml | 21 +++++ .../static/bidder-params/alkimi.json | 15 ++++ 5 files changed, 190 insertions(+) create mode 100644 src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java create mode 100644 src/main/java/org/prebid/server/proto/openrtb/ext/request/alkimi/ExtImpAlkimi.java create mode 100644 src/main/java/org/prebid/server/spring/config/bidder/AlkimiConfiguration.java create mode 100644 src/main/resources/bidder-config/alkimi.yaml create mode 100644 src/main/resources/static/bidder-params/alkimi.json diff --git a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java new file mode 100644 index 00000000000..6c25dcc78a9 --- /dev/null +++ b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java @@ -0,0 +1,90 @@ +package org.prebid.server.bidder.alkimi; + +import com.iab.openrtb.request.BidRequest; +import com.iab.openrtb.request.Imp; +import com.iab.openrtb.response.BidResponse; +import com.iab.openrtb.response.SeatBid; +import io.vertx.core.http.HttpMethod; +import org.apache.commons.collections4.CollectionUtils; +import org.prebid.server.bidder.Bidder; +import org.prebid.server.bidder.model.*; +import org.prebid.server.exception.PreBidException; +import org.prebid.server.json.DecodeException; +import org.prebid.server.json.JacksonMapper; +import org.prebid.server.proto.openrtb.ext.response.BidType; +import org.prebid.server.util.HttpUtil; + +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +public class AlkimiBidder implements Bidder { + + private final String endpointUrl; + private final JacksonMapper mapper; + + public AlkimiBidder(String endpointUrl, JacksonMapper mapper) { + this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); + this.mapper = Objects.requireNonNull(mapper); + } + + @Override + public Result>> makeHttpRequests(BidRequest request) { + + Result>> of = Result.of(Collections.singletonList(HttpRequest.builder() + .method(HttpMethod.POST) + .uri(endpointUrl) + .headers(HttpUtil.headers()) + .payload(request) + .body(mapper.encodeToBytes(request)) + .build()), Collections.emptyList()); + return of; + } + + @Override + public final Result> makeBids(HttpCall httpCall, BidRequest bidRequest) { + try { + final BidResponse bidResponse = mapper.decodeValue(httpCall.getResponse().getBody(), BidResponse.class); + return Result.of(extractBids(httpCall.getRequest().getPayload(), bidResponse), Collections.emptyList()); + } catch (DecodeException | PreBidException e) { + return Result.withError(BidderError.badServerResponse(e.getMessage())); + } + } + + private static List extractBids(BidRequest bidRequest, BidResponse bidResponse) { + if (bidResponse == null || CollectionUtils.isEmpty(bidResponse.getSeatbid())) { + return Collections.emptyList(); + } + return bidsFromResponse(bidRequest, bidResponse); + } + + private static List bidsFromResponse(BidRequest bidRequest, BidResponse bidResponse) { + return bidResponse.getSeatbid().stream() + .filter(Objects::nonNull) + .map(SeatBid::getBid) + .filter(Objects::nonNull) + .flatMap(Collection::stream) + .map(bid -> BidderBid.of(bid, getBidType(bid.getImpid(), bidRequest.getImp()), bidResponse.getCur())) + .collect(Collectors.toList()); + } + + private static BidType getBidType(String impId, List imps) { + BidType bidType = BidType.banner; + for (Imp imp : imps) { + if (imp.getId().equals(impId)) { + if (imp.getBanner() != null) { + return bidType; + } else if (imp.getVideo() != null) { + bidType = BidType.video; + } else if (imp.getXNative() != null) { + bidType = BidType.xNative; + } else if (imp.getAudio() != null) { + bidType = BidType.audio; + } + } + } + return bidType; + } +} diff --git a/src/main/java/org/prebid/server/proto/openrtb/ext/request/alkimi/ExtImpAlkimi.java b/src/main/java/org/prebid/server/proto/openrtb/ext/request/alkimi/ExtImpAlkimi.java new file mode 100644 index 00000000000..7be29250fa2 --- /dev/null +++ b/src/main/java/org/prebid/server/proto/openrtb/ext/request/alkimi/ExtImpAlkimi.java @@ -0,0 +1,13 @@ +package org.prebid.server.proto.openrtb.ext.request.alkimi; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Builder; +import lombok.Value; + +@Builder(toBuilder = true) +@Value +public class ExtImpAlkimi { + + @JsonProperty("placement_id") + Integer placementId; +} diff --git a/src/main/java/org/prebid/server/spring/config/bidder/AlkimiConfiguration.java b/src/main/java/org/prebid/server/spring/config/bidder/AlkimiConfiguration.java new file mode 100644 index 00000000000..70bb071c850 --- /dev/null +++ b/src/main/java/org/prebid/server/spring/config/bidder/AlkimiConfiguration.java @@ -0,0 +1,51 @@ +package org.prebid.server.spring.config.bidder; + +import org.prebid.server.bidder.BidderDeps; +import org.prebid.server.bidder.alkimi.AlkimiBidder; +import org.prebid.server.json.JacksonMapper; +import org.prebid.server.spring.config.bidder.model.BidderConfigurationProperties; +import org.prebid.server.spring.config.bidder.util.BidderDepsAssembler; +import org.prebid.server.spring.config.bidder.util.UsersyncerCreator; +import org.prebid.server.spring.env.YamlPropertySourceFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; + +import javax.validation.constraints.NotBlank; + +@Configuration +@PropertySource(value = "classpath:/bidder-config/alkimi.yaml", factory = YamlPropertySourceFactory.class) +public class AlkimiConfiguration { + + private static final String BIDDER_NAME = "alkimi"; + + @Value("${external-url}") + @NotBlank + private String externalUrl; + + @Autowired + private JacksonMapper mapper; + + @Autowired + @Qualifier("alkimiConfigurationProperties") + private BidderConfigurationProperties configProperties; + + @Bean("alkimiConfigurationProperties") + @ConfigurationProperties("adapters.alkimi") + BidderConfigurationProperties configurationProperties() { + return new BidderConfigurationProperties(); + } + + @Bean + BidderDeps alkimiBidderDeps() { + return BidderDepsAssembler.forBidder(BIDDER_NAME) + .withConfig(configProperties) + .usersyncerCreator(UsersyncerCreator.create(externalUrl)) + .bidderCreator(config -> new AlkimiBidder(config.getEndpoint(), mapper)) + .assemble(); + } +} diff --git a/src/main/resources/bidder-config/alkimi.yaml b/src/main/resources/bidder-config/alkimi.yaml new file mode 100644 index 00000000000..6367aa1dde9 --- /dev/null +++ b/src/main/resources/bidder-config/alkimi.yaml @@ -0,0 +1,21 @@ +adapters: + alkimi: + enabled: true + endpoint: http://127.0.0.1:8055/server/bid + meta-info: + maintainer-email: maintainer@email.com + app-media-types: + - banner + - video + - native + site-media-types: + - banner + - video + supported-vendors: + vendor-id: 0 + usersync: + url: https://localhost:8000/getuid? + redirect-url: /setuid?bidder=alkimi&gdpr={{gdpr}}&gdpr_consent={{gdpr_consent}}&us_privacy={{us_privacy}}&uid=$UID + cookie-family-name: alkimi + type: redirect + support-cors: false diff --git a/src/main/resources/static/bidder-params/alkimi.json b/src/main/resources/static/bidder-params/alkimi.json new file mode 100644 index 00000000000..adb5acae6f2 --- /dev/null +++ b/src/main/resources/static/bidder-params/alkimi.json @@ -0,0 +1,15 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Alkimi Adapter Params", + "description": "A schema which validates params accepted by the Alkimi adapter", + "type": "object", + + "properties": { + "placement_id": { + "type": "string", + "description": "Placement ID" + } + }, + + "required": ["placement_id"] +} From f47276368a6284ec65d6cce0732a23e70465fb5e Mon Sep 17 00:00:00 2001 From: Alexander Bogdanov Date: Mon, 6 Dec 2021 13:37:53 +0700 Subject: [PATCH 02/82] AlkimiBidder adapter --- .../server/bidder/alkimi/AlkimiBidder.java | 85 +++++++++++++++++-- .../ext/request/alkimi/ExtImpAlkimi.java | 12 ++- .../static/bidder-params/alkimi.json | 15 +++- 3 files changed, 96 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java index 6c25dcc78a9..20c0998b0cc 100644 --- a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java +++ b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java @@ -1,19 +1,32 @@ package org.prebid.server.bidder.alkimi; +import com.fasterxml.jackson.core.type.TypeReference; +import com.iab.openrtb.request.Banner; import com.iab.openrtb.request.BidRequest; +import com.iab.openrtb.request.Format; import com.iab.openrtb.request.Imp; +import com.iab.openrtb.request.Video; +import com.iab.openrtb.response.Bid; import com.iab.openrtb.response.BidResponse; import com.iab.openrtb.response.SeatBid; import io.vertx.core.http.HttpMethod; import org.apache.commons.collections4.CollectionUtils; import org.prebid.server.bidder.Bidder; -import org.prebid.server.bidder.model.*; +import org.prebid.server.bidder.model.BidderBid; +import org.prebid.server.bidder.model.BidderError; +import org.prebid.server.bidder.model.HttpCall; +import org.prebid.server.bidder.model.HttpRequest; +import org.prebid.server.bidder.model.Result; import org.prebid.server.exception.PreBidException; import org.prebid.server.json.DecodeException; import org.prebid.server.json.JacksonMapper; +import org.prebid.server.proto.openrtb.ext.ExtPrebid; +import org.prebid.server.proto.openrtb.ext.request.alkimi.ExtImpAlkimi; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; +import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -25,6 +38,9 @@ public class AlkimiBidder implements Bidder { private final String endpointUrl; private final JacksonMapper mapper; + private static final TypeReference> ALKIMI_EXT_TYPE_REFERENCE = new TypeReference<>() { + }; + public AlkimiBidder(String endpointUrl, JacksonMapper mapper) { this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); this.mapper = Objects.requireNonNull(mapper); @@ -32,15 +48,26 @@ public AlkimiBidder(String endpointUrl, JacksonMapper mapper) { @Override public Result>> makeHttpRequests(BidRequest request) { + List imps = request.getImp(); + final List updatedImps = new ArrayList<>(imps.size()); + + imps.forEach(imp -> { + ExtImpAlkimi ext = parseImpExt(imp); + updatedImps.add(updateImp(imp, ext)); + }); - Result>> of = Result.of(Collections.singletonList(HttpRequest.builder() - .method(HttpMethod.POST) - .uri(endpointUrl) - .headers(HttpUtil.headers()) - .payload(request) - .body(mapper.encodeToBytes(request)) - .build()), Collections.emptyList()); - return of; + final BidRequest outgoingRequest = request.toBuilder().imp(updatedImps).build(); + return Result.of(Collections.singletonList( + HttpRequest.builder() + .method(HttpMethod.POST) + .uri(endpointUrl) + .headers(HttpUtil.headers()) + .payload(outgoingRequest) + .body(mapper.encodeToBytes(outgoingRequest)) + .build() + ), + Collections.emptyList() + ); } @Override @@ -87,4 +114,44 @@ private static BidType getBidType(String impId, List imps) { } return bidType; } + + private ExtImpAlkimi parseImpExt(Imp imp) { + try { + return mapper.mapper().convertValue(imp.getExt(), ALKIMI_EXT_TYPE_REFERENCE).getBidder(); + } catch (IllegalArgumentException e) { + throw new PreBidException("Missing bidder ext in impression with id: " + imp.getId()); + } + } + + private static Imp updateImp(Imp imp, ExtImpAlkimi ext) { + BigDecimal bidFloor = ext.getBidFloor(); + Integer position = ext.getPos(); + + Imp.ImpBuilder impBuilder = imp.toBuilder(); + impBuilder.bidfloor(bidFloor); + + if (imp.getBanner() != null) { + final Banner banner = imp.getBanner(); + if (CollectionUtils.isNotEmpty(banner.getFormat())) { + final Format firstFormat = banner.getFormat().get(0); + impBuilder + .banner(banner.toBuilder() + .w(firstFormat.getW()) + .h(firstFormat.getH()) + .pos(position) + .build() + ); + } + } + + if (imp.getVideo() != null) { + Video video = imp.getVideo(); + impBuilder + .video(video.toBuilder() + .pos(position) + .build()); + } + + return impBuilder.build(); + } } diff --git a/src/main/java/org/prebid/server/proto/openrtb/ext/request/alkimi/ExtImpAlkimi.java b/src/main/java/org/prebid/server/proto/openrtb/ext/request/alkimi/ExtImpAlkimi.java index 7be29250fa2..1e855939dd5 100644 --- a/src/main/java/org/prebid/server/proto/openrtb/ext/request/alkimi/ExtImpAlkimi.java +++ b/src/main/java/org/prebid/server/proto/openrtb/ext/request/alkimi/ExtImpAlkimi.java @@ -1,13 +1,17 @@ package org.prebid.server.proto.openrtb.ext.request.alkimi; import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Builder; import lombok.Value; -@Builder(toBuilder = true) +import java.math.BigDecimal; + @Value public class ExtImpAlkimi { - @JsonProperty("placement_id") - Integer placementId; + String token; + + @JsonProperty("bidFloor") + BigDecimal bidFloor; + + Integer pos; } diff --git a/src/main/resources/static/bidder-params/alkimi.json b/src/main/resources/static/bidder-params/alkimi.json index adb5acae6f2..cb8dafcb298 100644 --- a/src/main/resources/static/bidder-params/alkimi.json +++ b/src/main/resources/static/bidder-params/alkimi.json @@ -5,11 +5,20 @@ "type": "object", "properties": { - "placement_id": { + "token": { "type": "string", - "description": "Placement ID" + "description": "Publisher Token provided by Alkimi" + }, + "bidFloor": { + "type": "number", + "description": "The minimum CPM price in USD", + "minimum": 0 + }, + "pos": { + "type": "number", + "description": "Specify the position of the ad as a relative measure of visibility or prominence. Allowed values: Above the fold: `1`; Below the fold: `3`; Middle of the fold: `7`;" } }, - "required": ["placement_id"] + "required": ["token", "bidFloor"] } From b6cf6160a968d45410c41474d9513f5e90e88a2d Mon Sep 17 00:00:00 2001 From: Alexander Bogdanov Date: Mon, 6 Dec 2021 15:18:58 +0700 Subject: [PATCH 03/82] AlkimiBidder adapter --- .../java/org/prebid/server/bidder/alkimi/AlkimiBidder.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java index 20c0998b0cc..5c92a2bb713 100644 --- a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java +++ b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java @@ -6,7 +6,6 @@ import com.iab.openrtb.request.Format; import com.iab.openrtb.request.Imp; import com.iab.openrtb.request.Video; -import com.iab.openrtb.response.Bid; import com.iab.openrtb.response.BidResponse; import com.iab.openrtb.response.SeatBid; import io.vertx.core.http.HttpMethod; @@ -139,8 +138,7 @@ private static Imp updateImp(Imp imp, ExtImpAlkimi ext) { .w(firstFormat.getW()) .h(firstFormat.getH()) .pos(position) - .build() - ); + .build()); } } From 769221d53a0ff0a05ffb2dda4eb106583db6b011 Mon Sep 17 00:00:00 2001 From: Alexander Bogdanov Date: Mon, 6 Dec 2021 15:49:58 +0700 Subject: [PATCH 04/82] AlkimiBidder adapter config --- src/main/resources/bidder-config/alkimi.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/bidder-config/alkimi.yaml b/src/main/resources/bidder-config/alkimi.yaml index 6367aa1dde9..24b8fa73310 100644 --- a/src/main/resources/bidder-config/alkimi.yaml +++ b/src/main/resources/bidder-config/alkimi.yaml @@ -1,7 +1,7 @@ adapters: alkimi: enabled: true - endpoint: http://127.0.0.1:8055/server/bid + endpoint: http://127.0.0.1:8090/server/bid meta-info: maintainer-email: maintainer@email.com app-media-types: From 76e4609ce8528738a38fe09c8c53a41133b5d82a Mon Sep 17 00:00:00 2001 From: Alexander Bogdanov Date: Thu, 10 Feb 2022 15:46:16 +0700 Subject: [PATCH 05/82] AlkimiBidder adapter config --- .../server/bidder/alkimi/AlkimiBidder.java | 23 ++++++++++++++++++- .../ext/request/alkimi/ExtImpAlkimi.java | 8 +++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java index 5c92a2bb713..2d22c258f89 100644 --- a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java +++ b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java @@ -1,6 +1,7 @@ package org.prebid.server.bidder.alkimi; import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.node.ObjectNode; import com.iab.openrtb.request.Banner; import com.iab.openrtb.request.BidRequest; import com.iab.openrtb.request.Format; @@ -29,6 +30,7 @@ import java.util.Collection; import java.util.Collections; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; @@ -37,6 +39,9 @@ public class AlkimiBidder implements Bidder { private final String endpointUrl; private final JacksonMapper mapper; + private static final String TYPE_BANNER = "Banner"; + private static final String TYPE_VIDEO = "Video"; + private static final TypeReference> ALKIMI_EXT_TYPE_REFERENCE = new TypeReference<>() { }; @@ -122,11 +127,20 @@ private ExtImpAlkimi parseImpExt(Imp imp) { } } - private static Imp updateImp(Imp imp, ExtImpAlkimi ext) { + private ObjectNode writeImpExt(ExtImpAlkimi extImpAlkimi) { + try { + return mapper.mapper().convertValue(Map.of("bidder", extImpAlkimi), ObjectNode.class); + } catch (IllegalArgumentException e) { + throw new PreBidException("Error while writing Ext in Alkimi Bidder"); + } + } + + private Imp updateImp(Imp imp, ExtImpAlkimi ext) { BigDecimal bidFloor = ext.getBidFloor(); Integer position = ext.getPos(); Imp.ImpBuilder impBuilder = imp.toBuilder(); + ExtImpAlkimi.ExtImpAlkimiBuilder extBuilder = ext.toBuilder(); impBuilder.bidfloor(bidFloor); if (imp.getBanner() != null) { @@ -139,6 +153,9 @@ private static Imp updateImp(Imp imp, ExtImpAlkimi ext) { .h(firstFormat.getH()) .pos(position) .build()); + extBuilder.width(firstFormat.getW()); + extBuilder.height(firstFormat.getH()); + extBuilder.impMediaType(TYPE_BANNER); } } @@ -148,8 +165,12 @@ private static Imp updateImp(Imp imp, ExtImpAlkimi ext) { .video(video.toBuilder() .pos(position) .build()); + extBuilder.width(video.getW()); + extBuilder.height(video.getH()); + extBuilder.impMediaType(TYPE_VIDEO); } + impBuilder.ext(writeImpExt(extBuilder.build())); return impBuilder.build(); } } diff --git a/src/main/java/org/prebid/server/proto/openrtb/ext/request/alkimi/ExtImpAlkimi.java b/src/main/java/org/prebid/server/proto/openrtb/ext/request/alkimi/ExtImpAlkimi.java index 1e855939dd5..d916c49339b 100644 --- a/src/main/java/org/prebid/server/proto/openrtb/ext/request/alkimi/ExtImpAlkimi.java +++ b/src/main/java/org/prebid/server/proto/openrtb/ext/request/alkimi/ExtImpAlkimi.java @@ -1,11 +1,13 @@ package org.prebid.server.proto.openrtb.ext.request.alkimi; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Builder; import lombok.Value; import java.math.BigDecimal; @Value +@Builder(toBuilder = true) public class ExtImpAlkimi { String token; @@ -14,4 +16,10 @@ public class ExtImpAlkimi { BigDecimal bidFloor; Integer pos; + + int width; + int height; + + @JsonProperty("impMediaType") + String impMediaType; } From 80363580cd7cf3cc2f6d927c64bcb645ead84092 Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Thu, 10 Mar 2022 12:07:19 +0700 Subject: [PATCH 06/82] added Jenkinsfile --- Dockerfile | 2 +- Jenkinsfile | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 Jenkinsfile diff --git a/Dockerfile b/Dockerfile index cbd9db98f79..9833373bfe7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,7 +9,7 @@ COPY src/main/docker/run.sh ./ COPY src/main/docker/application.yaml ./ COPY target/prebid-server.jar ./ -EXPOSE 8080 +EXPOSE 8050 EXPOSE 8060 ENTRYPOINT [ "/app/prebid-server/run.sh" ] diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 00000000000..c3cbf443511 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,35 @@ +#!groovy +pipeline { + environment { + CI = "false" + MY_VERSION = sh( + script: 'echo "${BRANCH_NAME}.${BUILD_ID}"', + returnStdout: true + ).trim() + } + options { + disableConcurrentBuilds() + } + agent any + stages { + stage('Build jar') { + steps { + script { + sh "echo ${BRANCH_NAME} ${GIT_BRANCH} ${GIT_COMMIT} ${JAVA_HOME} ${MY_VERSION}" + sh "mvn clean package -Drevision=${MY_VERSION}" + } + } + } + stage('Build and push docker images') { + steps { + script { + docker.withRegistry('https://685748726849.dkr.ecr.eu-west-2.amazonaws.com','ecr:eu-west-2:jenkins_ecr') { + def dockerImage = docker.build("alkimi/prebid-server:${MY_VERSION}", "-f Dockerfile ${WORKSPACE}") + dockerImage.push() + dockerImage.push('latest') + } + } + } + } + } +} From 3aebb2e6e416049c4882bf9da236ad6e89bcae11 Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Thu, 10 Mar 2022 13:21:22 +0700 Subject: [PATCH 07/82] changed jenkinsfile --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index c3cbf443511..c94a31e3670 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -15,7 +15,7 @@ pipeline { stage('Build jar') { steps { script { - sh "echo ${BRANCH_NAME} ${GIT_BRANCH} ${GIT_COMMIT} ${JAVA_HOME} ${MY_VERSION}" + sh "echo ${GIT_BRANCH} ${GIT_COMMIT} ${MY_VERSION}" sh "mvn clean package -Drevision=${MY_VERSION}" } } From 4e5939fff195d47b3fab082080f3966d25caf9f5 Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Thu, 10 Mar 2022 13:27:30 +0700 Subject: [PATCH 08/82] changed jenkinsfile --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index c94a31e3670..6e22c252aba 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -16,7 +16,7 @@ pipeline { steps { script { sh "echo ${GIT_BRANCH} ${GIT_COMMIT} ${MY_VERSION}" - sh "mvn clean package -Drevision=${MY_VERSION}" + sh "mvn clean package -Drevision=${MY_VERSION} -DskipTests=true" } } } From 6de85e183da87c603eac5d42452eb88103bfc2b7 Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Thu, 10 Mar 2022 13:32:20 +0700 Subject: [PATCH 09/82] changed jenkinsfile --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 6e22c252aba..7d386999a85 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -16,7 +16,7 @@ pipeline { steps { script { sh "echo ${GIT_BRANCH} ${GIT_COMMIT} ${MY_VERSION}" - sh "mvn clean package -Drevision=${MY_VERSION} -DskipTests=true" + sh "mvn clean package -Drevision=${MY_VERSION} -DskipUnitTests=true" } } } From 210281d1afd4a4799aa2c8ba5ac203578cba6797 Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Thu, 10 Mar 2022 14:21:28 +0700 Subject: [PATCH 10/82] changed dockerfile --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 9833373bfe7..d7f06556efb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM openjdk:11-jre-slim +FROM openjdk:11 WORKDIR /app/prebid-server From 8febe505db209e83b2543196c11efd64d8659092 Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Thu, 10 Mar 2022 14:41:24 +0700 Subject: [PATCH 11/82] changed dockerfile --- Dockerfile | 4 +++- sample/prebid-config.yaml | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index d7f06556efb..2d035e683d0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM openjdk:11 +FROM openjdk:11-jre-slim WORKDIR /app/prebid-server @@ -7,6 +7,8 @@ VOLUME /app/prebid-server/data COPY src/main/docker/run.sh ./ COPY src/main/docker/application.yaml ./ +COPY sample/prebid-config.yaml ./conf/ +COPY sample/sample-app-settings.yaml ./conf/ COPY target/prebid-server.jar ./ EXPOSE 8050 diff --git a/sample/prebid-config.yaml b/sample/prebid-config.yaml index fbfb0badbf4..b7028f6393b 100644 --- a/sample/prebid-config.yaml +++ b/sample/prebid-config.yaml @@ -13,7 +13,7 @@ cache: query: uuid= settings: filesystem: - settings-filename: sample/sample-app-settings.yaml + settings-filename: conf/sample-app-settings.yaml stored-requests-dir: stored-imps-dir: stored-responses-dir: From 1217175620f59150e860924178cddd977feaa77b Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Thu, 10 Mar 2022 15:06:22 +0700 Subject: [PATCH 12/82] changed dockerfile --- Dockerfile | 5 +++-- sample/prebid-config.yaml | 2 +- src/main/docker/run.sh | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 2d035e683d0..e5c5b06273a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,12 +3,13 @@ FROM openjdk:11-jre-slim WORKDIR /app/prebid-server VOLUME /app/prebid-server/conf +VOLUME /app/prebid-server/sample VOLUME /app/prebid-server/data COPY src/main/docker/run.sh ./ COPY src/main/docker/application.yaml ./ -COPY sample/prebid-config.yaml ./conf/ -COPY sample/sample-app-settings.yaml ./conf/ +COPY sample/prebid-config.yaml ./sample/ +COPY sample/sample-app-settings.yaml ./sample/ COPY target/prebid-server.jar ./ EXPOSE 8050 diff --git a/sample/prebid-config.yaml b/sample/prebid-config.yaml index b7028f6393b..fbfb0badbf4 100644 --- a/sample/prebid-config.yaml +++ b/sample/prebid-config.yaml @@ -13,7 +13,7 @@ cache: query: uuid= settings: filesystem: - settings-filename: conf/sample-app-settings.yaml + settings-filename: sample/sample-app-settings.yaml stored-requests-dir: stored-imps-dir: stored-responses-dir: diff --git a/src/main/docker/run.sh b/src/main/docker/run.sh index 54f73437643..fd3c29b3a7d 100755 --- a/src/main/docker/run.sh +++ b/src/main/docker/run.sh @@ -2,7 +2,7 @@ exec java \ -Dvertx.cacheDirBase=/app/prebid-server/data/.vertx \ - -Dspring.config.additional-location=/app/prebid-server/,/app/prebid-server/conf/ \ + -Dspring.config.additional-location=/app/prebid-server/sample/prebid-config.yaml \ ${JAVA_OPTS} \ -jar \ /app/prebid-server/prebid-server.jar From 941771dca768fee2de6dea547c631d254007e4ec Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Thu, 10 Mar 2022 17:42:19 +0700 Subject: [PATCH 13/82] adde alkimi.yaml.demo --- .gitignore | 2 ++ Jenkinsfile | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/.gitignore b/.gitignore index 49495464430..b4c40e442d9 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,5 @@ target/ .DS_Store .allure/ + +alkimi.yaml.demo diff --git a/Jenkinsfile b/Jenkinsfile index 7d386999a85..792838a90e6 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -12,6 +12,11 @@ pipeline { } agent any stages { + stage('Configure') { + steps { + sh 'cp ./src/main/resources/bidder-config/alkimi.yaml.demo ./src/main/resources/bidder-config/alkimi.yaml' + } + } stage('Build jar') { steps { script { From bfbe15ef628ceee8b6a8b4e4e71abadad2285a1f Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Thu, 10 Mar 2022 17:44:32 +0700 Subject: [PATCH 14/82] adde alkimi.yaml.demo --- .gitignore | 2 -- .../resources/bidder-config/alkimi.yaml.demo | 21 +++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/bidder-config/alkimi.yaml.demo diff --git a/.gitignore b/.gitignore index b4c40e442d9..49495464430 100644 --- a/.gitignore +++ b/.gitignore @@ -14,5 +14,3 @@ target/ .DS_Store .allure/ - -alkimi.yaml.demo diff --git a/src/main/resources/bidder-config/alkimi.yaml.demo b/src/main/resources/bidder-config/alkimi.yaml.demo new file mode 100644 index 00000000000..ae637e92e03 --- /dev/null +++ b/src/main/resources/bidder-config/alkimi.yaml.demo @@ -0,0 +1,21 @@ +adapters: + alkimi: + enabled: true + endpoint: http://exchange:8085/server/bid + meta-info: + maintainer-email: maintainer@email.com + app-media-types: + - banner + - video + - native + site-media-types: + - banner + - video + supported-vendors: + vendor-id: 0 + usersync: + url: https://localhost:8000/getuid? + redirect-url: /setuid?bidder=alkimi&gdpr={{gdpr}}&gdpr_consent={{gdpr_consent}}&us_privacy={{us_privacy}}&uid=$UID + cookie-family-name: alkimi + type: redirect + support-cors: false From 120d5ce26f96862efea41bb1046c27e31b4d7be6 Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Thu, 10 Mar 2022 17:50:20 +0700 Subject: [PATCH 15/82] adde alkimi.yaml.demo --- src/main/resources/bidder-config/alkimi.yaml.demo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/bidder-config/alkimi.yaml.demo b/src/main/resources/bidder-config/alkimi.yaml.demo index ae637e92e03..7ee628707cd 100644 --- a/src/main/resources/bidder-config/alkimi.yaml.demo +++ b/src/main/resources/bidder-config/alkimi.yaml.demo @@ -1,7 +1,7 @@ adapters: alkimi: enabled: true - endpoint: http://exchange:8085/server/bid + endpoint: http://exchange:8080/server/bid meta-info: maintainer-email: maintainer@email.com app-media-types: From ad7842570a22fccb1b1423ffb251500fb8283a63 Mon Sep 17 00:00:00 2001 From: alexander bogdanov Date: Wed, 20 Apr 2022 13:50:47 +0700 Subject: [PATCH 16/82] AlkimiBidder test --- .../bidder/alkimi/AlkimiBidderTest.java | 264 ++++++++++++++++++ 1 file changed, 264 insertions(+) create mode 100644 src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java diff --git a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java new file mode 100644 index 00000000000..1f2b0828288 --- /dev/null +++ b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java @@ -0,0 +1,264 @@ +package org.prebid.server.bidder.alkimi; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.iab.openrtb.request.Banner; +import com.iab.openrtb.request.BidRequest; +import com.iab.openrtb.request.Format; +import com.iab.openrtb.request.Imp; +import com.iab.openrtb.request.Video; +import com.iab.openrtb.response.Bid; +import com.iab.openrtb.response.BidResponse; +import com.iab.openrtb.response.SeatBid; +import org.junit.Before; +import org.junit.Test; +import org.prebid.server.VertxTest; +import org.prebid.server.bidder.amx.AmxBidder; +import org.prebid.server.bidder.model.BidderBid; +import org.prebid.server.bidder.model.BidderError; +import org.prebid.server.bidder.model.HttpCall; +import org.prebid.server.bidder.model.HttpRequest; +import org.prebid.server.bidder.model.HttpResponse; +import org.prebid.server.bidder.model.Result; +import org.prebid.server.proto.openrtb.ext.ExtPrebid; +import org.prebid.server.proto.openrtb.ext.request.alkimi.ExtImpAlkimi; + +import java.math.BigDecimal; +import java.util.List; +import java.util.function.Function; + +import static java.util.Collections.singletonList; +import static java.util.function.Function.identity; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; +import static org.prebid.server.proto.openrtb.ext.response.BidType.banner; +import static org.prebid.server.proto.openrtb.ext.response.BidType.video; + +public class AlkimiBidderTest extends VertxTest { + + private static final String ENDPOINT_URL = "https://alkimi.ex/server/bid"; + private static final String DIV_BANNER_ID = "div_banner_1"; + private static final String DIV_VIDEO_ID = "div_video_1"; + private static final String PUB_TOKEN = "testPubToken"; + private static final String TYPE_BANNER = "Banner"; + private static final String TYPE_VIDEO = "Video"; + + private AlkimiBidder alkimiBidder; + + @Before + public void setUp() { + alkimiBidder = new AlkimiBidder(ENDPOINT_URL, jacksonMapper); + } + + @Test + public void creationShouldFailOnInvalidEndpointUrl() { + assertThatIllegalArgumentException().isThrownBy(() -> new AmxBidder("invalid_url", jacksonMapper)); + } + + @Test + public void makeHttpRequestsShouldUseCorrectURL() { + final BidRequest bidRequest = givenBidRequest(impBuilder -> impBuilder.banner(Banner.builder().build())); + final Result>> result = alkimiBidder.makeHttpRequests(bidRequest); + + assertThat(result.getErrors()).isEmpty(); + assertThat(result.getValue()).hasSize(1) + .extracting(HttpRequest::getUri) + .containsExactly(ENDPOINT_URL); + } + + @Test + public void makeHttpRequestsShouldUpdateImps() { + final BidRequest bidRequest = givenBidRequest(); + final Result>> result = alkimiBidder.makeHttpRequests(bidRequest); + + final BidRequest expectedBidRequest = BidRequest.builder() + .imp(List.of(Imp.builder() + .id(DIV_BANNER_ID) + .bidfloor(BigDecimal.valueOf(0.2)) + .banner(Banner.builder() + .pos(5) + .w(300) + .h(250) + .format(List.of(Format.builder() + .w(300) + .h(250) + .build()) + ).build() + ) + .ext(mapper.valueToTree(ExtPrebid.of( + null, + ExtImpAlkimi.builder() + .token(PUB_TOKEN) + .bidFloor(BigDecimal.valueOf(0.2)) + .pos(5) + .width(300) + .height(250) + .impMediaType(TYPE_BANNER) + .build() + ))) + .build(), + Imp.builder() + .id(DIV_VIDEO_ID) + .bidfloor(BigDecimal.valueOf(0.3)) + .video(Video.builder() + .pos(7) + .w(1024) + .h(768) + .mimes(List.of("video/mp4")) + .protocols(List.of(1, 2, 3, 4, 5)) + .build() + ) + .ext(mapper.valueToTree(ExtPrebid.of( + null, + ExtImpAlkimi.builder() + .token(PUB_TOKEN) + .bidFloor(BigDecimal.valueOf(0.3)) + .pos(7) + .width(1024) + .height(768) + .impMediaType(TYPE_VIDEO) + .build() + ))) + .build()) + ).build(); + + assertThat(result.getValue()) + .extracting(HttpRequest::getPayload) + .containsExactly(expectedBidRequest); + } + + @Test + public void makeBidsShouldReturnErrorIfResponseBodyCouldNotBeParsed() { + final HttpCall httpCall = givenHttpCall(null, "invalid"); + final Result> result = alkimiBidder.makeBids(httpCall, null); + + assertThat(result.getErrors()).hasSize(1); + assertThat(result.getErrors()).allMatch(error -> + error.getType() == BidderError.Type.bad_server_response && error.getMessage().startsWith("Failed to decode: Unrecognized token") + ); + assertThat(result.getValue()).isEmpty(); + } + + @Test + public void makeBidsShouldReturnEmptyListIfBidResponseIsNull() throws JsonProcessingException { + final HttpCall httpCall = givenHttpCall(null, mapper.writeValueAsString(null)); + final Result> result = alkimiBidder.makeBids(httpCall, null); + + assertThat(result.getErrors()).isEmpty(); + assertThat(result.getValue()).isEmpty(); + } + + @Test + public void makeBidsShouldReturnEmptyListIfBidResponseSeatBidIsNull() throws JsonProcessingException { + final HttpCall httpCall = givenHttpCall(null, mapper.writeValueAsString(BidResponse.builder().build())); + final Result> result = alkimiBidder.makeBids(httpCall, null); + + assertThat(result.getErrors()).isEmpty(); + assertThat(result.getValue()).isEmpty(); + } + + @Test + public void makeBidsShouldReturnBidsForBannerAndVideoImps() throws JsonProcessingException { + final HttpCall httpCall = givenHttpCall(givenBidRequest(), mapper.writeValueAsString(givenBidResponse())); + final Result> result = alkimiBidder.makeBids(httpCall, null); + + assertThat(result.getErrors()).isEmpty(); + assertThat(result.getValue()).contains(BidderBid.of(givenBannerBid(identity()), banner, null)); + assertThat(result.getValue()).contains(BidderBid.of(givenVideoBid(identity()), video, null)); + } + + private static BidRequest givenBidRequest() { + return givenBidRequest(identity()); + } + + private static BidRequest givenBidRequest(Function impCustomizer) { + return givenBidRequest(identity(), impCustomizer); + } + + private static BidRequest givenBidRequest( + Function bidRequestCustomizer, + Function impCustomizer + ) { + return bidRequestCustomizer.apply(BidRequest.builder() + .imp(List.of(givenBannerImp(impCustomizer), givenVideoImp(impCustomizer))) + ).build(); + } + + private static Imp givenBannerImp(Function impCustomizer) { + return impCustomizer.apply(Imp.builder() + .id(DIV_BANNER_ID) + .banner(Banner.builder() + .format(List.of(Format.builder() + .w(300) + .h(250) + .build()) + ).build() + ) + .ext(mapper.valueToTree(ExtPrebid.of( + null, + ExtImpAlkimi.builder() + .token(PUB_TOKEN) + .bidFloor(BigDecimal.valueOf(0.2)) + .pos(5) + .build() + ))) + ).build(); + } + + private static Imp givenVideoImp(Function impCustomizer) { + return impCustomizer.apply(Imp.builder() + .id(DIV_VIDEO_ID) + .video(Video.builder() + .w(1024) + .h(768) + .mimes(List.of("video/mp4")) + .protocols(List.of(1, 2, 3, 4, 5)) + .build() + ) + .ext(mapper.valueToTree(ExtPrebid.of( + null, + ExtImpAlkimi.builder() + .token(PUB_TOKEN) + .bidFloor(BigDecimal.valueOf(0.3)) + .pos(7) + .build() + ))) + ).build(); + } + + private static BidResponse givenBidResponse() { + return givenBidResponse(identity()); + } + + private static BidResponse givenBidResponse(Function bidCustomizer) { + return givenBidResponse(identity(), bidCustomizer); + } + + private static BidResponse givenBidResponse( + Function bidResponseCustomizer, + Function bidCustomizer + ) { + return bidResponseCustomizer.apply(BidResponse.builder() + .seatbid(singletonList(SeatBid.builder().bid(List.of(givenBannerBid(bidCustomizer), givenVideoBid(bidCustomizer))).build())) + ).build(); + } + + private static Bid givenBannerBid(Function bidCustomizer) { + return bidCustomizer.apply(Bid.builder() + .impid(DIV_BANNER_ID) + ).build(); + } + + private static Bid givenVideoBid(Function bidCustomizer) { + return bidCustomizer.apply(Bid.builder() + .impid(DIV_VIDEO_ID) + ).build(); + } + + private static HttpCall givenHttpCall(BidRequest bidRequest, String body) { + return HttpCall.success( + HttpRequest.builder().payload(bidRequest).build(), + HttpResponse.of(200, null, body), + null); + } +} + From 7c08517f9a2d88b4ca833ddd3e6d1d9f933fd627 Mon Sep 17 00:00:00 2001 From: alexander bogdanov Date: Fri, 22 Apr 2022 11:56:26 +0700 Subject: [PATCH 17/82] Alkimi exchange endpoint --- src/main/resources/bidder-config/alkimi.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/bidder-config/alkimi.yaml b/src/main/resources/bidder-config/alkimi.yaml index 24b8fa73310..d70dc4f8dd5 100644 --- a/src/main/resources/bidder-config/alkimi.yaml +++ b/src/main/resources/bidder-config/alkimi.yaml @@ -1,7 +1,7 @@ adapters: alkimi: enabled: true - endpoint: http://127.0.0.1:8090/server/bid + endpoint: https://exchange.alkimi-onboarding.com/server/bid meta-info: maintainer-email: maintainer@email.com app-media-types: From 26fbdc9a5ed3170c7ebedaf5abd6a44efce6b2b5 Mon Sep 17 00:00:00 2001 From: alexander bogdanov Date: Fri, 22 Apr 2022 12:58:13 +0700 Subject: [PATCH 18/82] Alkimi Prebid Server Adapter fixes --- Dockerfile | 5 +-- Jenkinsfile | 40 ------------------- src/main/docker/run.sh | 2 +- .../resources/bidder-config/alkimi.yaml.demo | 21 ---------- .../bidder/alkimi/AlkimiBidderTest.java | 4 +- 5 files changed, 4 insertions(+), 68 deletions(-) delete mode 100644 Jenkinsfile delete mode 100644 src/main/resources/bidder-config/alkimi.yaml.demo diff --git a/Dockerfile b/Dockerfile index e5c5b06273a..cbd9db98f79 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,16 +3,13 @@ FROM openjdk:11-jre-slim WORKDIR /app/prebid-server VOLUME /app/prebid-server/conf -VOLUME /app/prebid-server/sample VOLUME /app/prebid-server/data COPY src/main/docker/run.sh ./ COPY src/main/docker/application.yaml ./ -COPY sample/prebid-config.yaml ./sample/ -COPY sample/sample-app-settings.yaml ./sample/ COPY target/prebid-server.jar ./ -EXPOSE 8050 +EXPOSE 8080 EXPOSE 8060 ENTRYPOINT [ "/app/prebid-server/run.sh" ] diff --git a/Jenkinsfile b/Jenkinsfile deleted file mode 100644 index 792838a90e6..00000000000 --- a/Jenkinsfile +++ /dev/null @@ -1,40 +0,0 @@ -#!groovy -pipeline { - environment { - CI = "false" - MY_VERSION = sh( - script: 'echo "${BRANCH_NAME}.${BUILD_ID}"', - returnStdout: true - ).trim() - } - options { - disableConcurrentBuilds() - } - agent any - stages { - stage('Configure') { - steps { - sh 'cp ./src/main/resources/bidder-config/alkimi.yaml.demo ./src/main/resources/bidder-config/alkimi.yaml' - } - } - stage('Build jar') { - steps { - script { - sh "echo ${GIT_BRANCH} ${GIT_COMMIT} ${MY_VERSION}" - sh "mvn clean package -Drevision=${MY_VERSION} -DskipUnitTests=true" - } - } - } - stage('Build and push docker images') { - steps { - script { - docker.withRegistry('https://685748726849.dkr.ecr.eu-west-2.amazonaws.com','ecr:eu-west-2:jenkins_ecr') { - def dockerImage = docker.build("alkimi/prebid-server:${MY_VERSION}", "-f Dockerfile ${WORKSPACE}") - dockerImage.push() - dockerImage.push('latest') - } - } - } - } - } -} diff --git a/src/main/docker/run.sh b/src/main/docker/run.sh index fd3c29b3a7d..54f73437643 100755 --- a/src/main/docker/run.sh +++ b/src/main/docker/run.sh @@ -2,7 +2,7 @@ exec java \ -Dvertx.cacheDirBase=/app/prebid-server/data/.vertx \ - -Dspring.config.additional-location=/app/prebid-server/sample/prebid-config.yaml \ + -Dspring.config.additional-location=/app/prebid-server/,/app/prebid-server/conf/ \ ${JAVA_OPTS} \ -jar \ /app/prebid-server/prebid-server.jar diff --git a/src/main/resources/bidder-config/alkimi.yaml.demo b/src/main/resources/bidder-config/alkimi.yaml.demo deleted file mode 100644 index 7ee628707cd..00000000000 --- a/src/main/resources/bidder-config/alkimi.yaml.demo +++ /dev/null @@ -1,21 +0,0 @@ -adapters: - alkimi: - enabled: true - endpoint: http://exchange:8080/server/bid - meta-info: - maintainer-email: maintainer@email.com - app-media-types: - - banner - - video - - native - site-media-types: - - banner - - video - supported-vendors: - vendor-id: 0 - usersync: - url: https://localhost:8000/getuid? - redirect-url: /setuid?bidder=alkimi&gdpr={{gdpr}}&gdpr_consent={{gdpr_consent}}&us_privacy={{us_privacy}}&uid=$UID - cookie-family-name: alkimi - type: redirect - support-cors: false diff --git a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java index 1f2b0828288..fee22ec809a 100644 --- a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java @@ -35,7 +35,7 @@ public class AlkimiBidderTest extends VertxTest { - private static final String ENDPOINT_URL = "https://alkimi.ex/server/bid"; + private static final String ENDPOINT_URL = "https://exchange.alkimi-onboarding.com/server/bid"; private static final String DIV_BANNER_ID = "div_banner_1"; private static final String DIV_VIDEO_ID = "div_video_1"; private static final String PUB_TOKEN = "testPubToken"; @@ -51,7 +51,7 @@ public void setUp() { @Test public void creationShouldFailOnInvalidEndpointUrl() { - assertThatIllegalArgumentException().isThrownBy(() -> new AmxBidder("invalid_url", jacksonMapper)); + assertThatIllegalArgumentException().isThrownBy(() -> new AlkimiBidder("invalid_url", jacksonMapper)); } @Test From 34fd310980060ff8b5544905aad97db02f93dd3e Mon Sep 17 00:00:00 2001 From: alexander bogdanov Date: Tue, 26 Apr 2022 18:16:38 +0700 Subject: [PATCH 19/82] Alkimi Prebid Server Adapter integration test --- src/main/resources/bidder-config/alkimi.yaml | 3 +- .../bidder/alkimi/AlkimiBidderTest.java | 1 - .../java/org/prebid/server/it/AlkimiTest.java | 36 ++++++++++++++ .../alkimi/test-alkimi-bid-request.json | 49 +++++++++++++++++++ .../alkimi/test-alkimi-bid-response.json | 20 ++++++++ .../alkimi/test-auction-alkimi-request.json | 30 ++++++++++++ .../alkimi/test-auction-alkimi-response.json | 37 ++++++++++++++ .../server/it/test-application.properties | 2 + 8 files changed, 175 insertions(+), 3 deletions(-) create mode 100644 src/test/java/org/prebid/server/it/AlkimiTest.java create mode 100644 src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-request.json create mode 100644 src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-response.json create mode 100644 src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-auction-alkimi-request.json create mode 100644 src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-auction-alkimi-response.json diff --git a/src/main/resources/bidder-config/alkimi.yaml b/src/main/resources/bidder-config/alkimi.yaml index d70dc4f8dd5..42c7c3328e4 100644 --- a/src/main/resources/bidder-config/alkimi.yaml +++ b/src/main/resources/bidder-config/alkimi.yaml @@ -3,11 +3,10 @@ adapters: enabled: true endpoint: https://exchange.alkimi-onboarding.com/server/bid meta-info: - maintainer-email: maintainer@email.com + maintainer-email: abogdanov@asteriosoft.com app-media-types: - banner - video - - native site-media-types: - banner - video diff --git a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java index fee22ec809a..495fe4c395b 100644 --- a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java @@ -12,7 +12,6 @@ import org.junit.Before; import org.junit.Test; import org.prebid.server.VertxTest; -import org.prebid.server.bidder.amx.AmxBidder; import org.prebid.server.bidder.model.BidderBid; import org.prebid.server.bidder.model.BidderError; import org.prebid.server.bidder.model.HttpCall; diff --git a/src/test/java/org/prebid/server/it/AlkimiTest.java b/src/test/java/org/prebid/server/it/AlkimiTest.java new file mode 100644 index 00000000000..61077e1319c --- /dev/null +++ b/src/test/java/org/prebid/server/it/AlkimiTest.java @@ -0,0 +1,36 @@ +package org.prebid.server.it; + +import io.restassured.response.Response; +import org.json.JSONException; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.prebid.server.model.Endpoint; +import org.springframework.test.context.junit4.SpringRunner; + +import java.io.IOException; + +import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; +import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; +import static com.github.tomakehurst.wiremock.client.WireMock.post; +import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; +import static java.util.Collections.singletonList; + +@RunWith(SpringRunner.class) +public class AlkimiTest extends IntegrationTest { + + @Test + public void openrtb2AuctionShouldRespondWithBidsFromAlkimi() throws IOException, JSONException { + // given + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/alkimi-exchange")) + .withRequestBody(equalToJson(jsonFrom("openrtb2/alkimi/test-alkimi-bid-request.json"))) + .willReturn(aResponse().withBody( + jsonFrom("openrtb2/alkimi/test-alkimi-bid-response.json")))); + + // when + final Response response = responseFor("openrtb2/alkimi/test-auction-alkimi-request.json", + Endpoint.openrtb2_auction); + + // then + assertJsonEquals("openrtb2/alkimi/test-auction-alkimi-response.json", response, singletonList("alkimi")); + } +} diff --git a/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-request.json b/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-request.json new file mode 100644 index 00000000000..5fc2f2c0d0c --- /dev/null +++ b/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-request.json @@ -0,0 +1,49 @@ +{ + "id": "request_id", + "imp": [ + { + "id": "imp_id", + "video": { + "mimes": [ + "video/mp4" + ], + "w": 640, + "h": 480 + }, + "bidfloor": 0.5, + "ext": { + "bidder": { + "token": "XXX", + "bidFloor": 0.5, + "width": 640, + "height": 480, + "impMediaType": "Video" + } + } + } + ], + "site": { + "domain": "www.example.com", + "page": "http://www.example.com", + "publisher": { + "domain": "example.com" + }, + "ext": { + "amp": 0 + } + }, + "device": { + "ua": "userAgent", + "ip": "193.168.244.1" + }, + "at": 1, + "tmax": 5000, + "cur": [ + "USD" + ], + "regs": { + "ext": { + "gdpr": 0 + } + } +} diff --git a/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-response.json b/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-response.json new file mode 100644 index 00000000000..c1e801ef328 --- /dev/null +++ b/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-response.json @@ -0,0 +1,20 @@ +{ + "id": "request_id", + "seatbid": [ + { + "bid": [ + { + "crid": "24080", + "adid": "2068416", + "price": 1, + "id": "bid_id", + "impid": "imp_id", + "adm": "00:00:15", + "nurl": "https://example.com/nurl", + "cid": "8048" + } + ], + "type": "video" + } + ] +} diff --git a/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-auction-alkimi-request.json b/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-auction-alkimi-request.json new file mode 100644 index 00000000000..01f1964b9aa --- /dev/null +++ b/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-auction-alkimi-request.json @@ -0,0 +1,30 @@ +{ + "id": "request_id", + "imp": [ + { + "id": "imp_id", + "video": { + "mimes": [ + "video/mp4" + ], + "w": 640, + "h": 480 + }, + "ext": { + "alkimi": { + "bidFloor": 0.5, + "token": "XXX" + } + } + } + ], + "tmax": 5000, + "cur": [ + "USD" + ], + "regs": { + "ext": { + "gdpr": 0 + } + } +} diff --git a/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-auction-alkimi-response.json b/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-auction-alkimi-response.json new file mode 100644 index 00000000000..ca0b59e06b3 --- /dev/null +++ b/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-auction-alkimi-response.json @@ -0,0 +1,37 @@ +{ + "id": "request_id", + "seatbid": [ + { + "bid": [ + { + "id": "bid_id", + "impid": "imp_id", + "price": 1, + "adid": "2068416", + "cid": "8048", + "crid": "24080", + "adm": "00:00:15", + "nurl": "https://example.com/nurl", + "ext": { + "prebid": { + "type": "video" + }, + "origbidcpm": 1 + } + } + ], + "seat": "alkimi", + "group": 0 + } + ], + "cur": "USD", + "ext": { + "responsetimemillis": { + "alkimi": "{{ alkimi.response_time_ms }}" + }, + "prebid": { + "auctiontimestamp": 0 + }, + "tmaxrequest": 5000 + } +} diff --git a/src/test/resources/org/prebid/server/it/test-application.properties b/src/test/resources/org/prebid/server/it/test-application.properties index d9f05a99a54..1a8de8b483b 100644 --- a/src/test/resources/org/prebid/server/it/test-application.properties +++ b/src/test/resources/org/prebid/server/it/test-application.properties @@ -51,6 +51,8 @@ adapters.aja.enabled=true adapters.aja.endpoint=http://localhost:8090/aja adapters.algorix.enabled=true adapters.algorix.endpoint=http://localhost:8090/algorix-exchange +adapters.alkimi.enabled=true +adapters.alkimi.endpoint=http://localhost:8090/alkimi-exchange adapters.amx.enabled=true adapters.amx.endpoint=http://localhost:8090/amx-exchange adapters.apacdex.enabled=true From ee2eddea6731ed3538cbb0086dcc016f15cb77ae Mon Sep 17 00:00:00 2001 From: alexander bogdanov Date: Tue, 26 Apr 2022 19:46:47 +0700 Subject: [PATCH 20/82] Alkimi Prebid Server Adapter test. LineLength fix --- .../server/bidder/alkimi/AlkimiBidderTest.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java index 495fe4c395b..7e0a2f016de 100644 --- a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java @@ -132,7 +132,8 @@ public void makeBidsShouldReturnErrorIfResponseBodyCouldNotBeParsed() { assertThat(result.getErrors()).hasSize(1); assertThat(result.getErrors()).allMatch(error -> - error.getType() == BidderError.Type.bad_server_response && error.getMessage().startsWith("Failed to decode: Unrecognized token") + error.getType() == BidderError.Type.bad_server_response + && error.getMessage().startsWith("Failed to decode: Unrecognized token") ); assertThat(result.getValue()).isEmpty(); } @@ -148,7 +149,10 @@ public void makeBidsShouldReturnEmptyListIfBidResponseIsNull() throws JsonProces @Test public void makeBidsShouldReturnEmptyListIfBidResponseSeatBidIsNull() throws JsonProcessingException { - final HttpCall httpCall = givenHttpCall(null, mapper.writeValueAsString(BidResponse.builder().build())); + final HttpCall httpCall = givenHttpCall( + null, + mapper.writeValueAsString(BidResponse.builder().build()) + ); final Result> result = alkimiBidder.makeBids(httpCall, null); assertThat(result.getErrors()).isEmpty(); @@ -157,7 +161,10 @@ public void makeBidsShouldReturnEmptyListIfBidResponseSeatBidIsNull() throws Jso @Test public void makeBidsShouldReturnBidsForBannerAndVideoImps() throws JsonProcessingException { - final HttpCall httpCall = givenHttpCall(givenBidRequest(), mapper.writeValueAsString(givenBidResponse())); + final HttpCall httpCall = givenHttpCall( + givenBidRequest(), + mapper.writeValueAsString(givenBidResponse()) + ); final Result> result = alkimiBidder.makeBids(httpCall, null); assertThat(result.getErrors()).isEmpty(); @@ -237,7 +244,10 @@ private static BidResponse givenBidResponse( Function bidCustomizer ) { return bidResponseCustomizer.apply(BidResponse.builder() - .seatbid(singletonList(SeatBid.builder().bid(List.of(givenBannerBid(bidCustomizer), givenVideoBid(bidCustomizer))).build())) + .seatbid(singletonList(SeatBid.builder().bid(List.of( + givenBannerBid(bidCustomizer), + givenVideoBid(bidCustomizer)) + ).build())) ).build(); } From 054a7835fd7b34a499d7f0663e4840a80a097615 Mon Sep 17 00:00:00 2001 From: alexander bogdanov Date: Wed, 27 Apr 2022 17:40:01 +0700 Subject: [PATCH 21/82] Alkimi Prebid Server Adapter test. config fix --- src/main/resources/bidder-config/alkimi.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/resources/bidder-config/alkimi.yaml b/src/main/resources/bidder-config/alkimi.yaml index 42c7c3328e4..d82e3b4dc8f 100644 --- a/src/main/resources/bidder-config/alkimi.yaml +++ b/src/main/resources/bidder-config/alkimi.yaml @@ -1,6 +1,5 @@ adapters: alkimi: - enabled: true endpoint: https://exchange.alkimi-onboarding.com/server/bid meta-info: maintainer-email: abogdanov@asteriosoft.com From 8a884e3ddaa06daa5fe6016be9e87246de1c6789 Mon Sep 17 00:00:00 2001 From: alexander bogdanov Date: Fri, 29 Apr 2022 12:32:40 +0700 Subject: [PATCH 22/82] Alkimi Prebid Server Adapter test. Fixes after review --- .../server/bidder/alkimi/AlkimiBidder.java | 143 +++++++++--------- .../ext/request/alkimi/ExtImpAlkimi.java | 5 +- .../bidder/alkimi/AlkimiBidderTest.java | 112 ++++++++------ 3 files changed, 133 insertions(+), 127 deletions(-) diff --git a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java index 2d22c258f89..e0b54cce6e2 100644 --- a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java +++ b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java @@ -26,7 +26,6 @@ import org.prebid.server.util.HttpUtil; import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -52,33 +51,82 @@ public AlkimiBidder(String endpointUrl, JacksonMapper mapper) { @Override public Result>> makeHttpRequests(BidRequest request) { - List imps = request.getImp(); - final List updatedImps = new ArrayList<>(imps.size()); - - imps.forEach(imp -> { - ExtImpAlkimi ext = parseImpExt(imp); - updatedImps.add(updateImp(imp, ext)); - }); + final List updatedImps = request.getImp().stream() + .map(imp -> updateImp(imp, parseImpExt(imp))) + .collect(Collectors.toList()); final BidRequest outgoingRequest = request.toBuilder().imp(updatedImps).build(); - return Result.of(Collections.singletonList( - HttpRequest.builder() - .method(HttpMethod.POST) - .uri(endpointUrl) - .headers(HttpUtil.headers()) - .payload(outgoingRequest) - .body(mapper.encodeToBytes(outgoingRequest)) - .build() - ), - Collections.emptyList() - ); + return Result.withValue( + HttpRequest.builder() + .method(HttpMethod.POST) + .uri(endpointUrl) + .headers(HttpUtil.headers()) + .payload(outgoingRequest) + .body(mapper.encodeToBytes(outgoingRequest)) + .build()); + } + + private ExtImpAlkimi parseImpExt(Imp imp) { + try { + return mapper.mapper().convertValue(imp.getExt(), ALKIMI_EXT_TYPE_REFERENCE).getBidder(); + } catch (IllegalArgumentException e) { + throw new PreBidException("Missing bidder ext in impression with id: " + imp.getId()); + } + } + + private Imp updateImp(Imp imp, ExtImpAlkimi extImpAlkimi) { + final Integer position = extImpAlkimi.getPos(); + final Banner updatedBanner = updateBanner(imp.getBanner(), position); + final Video updatedVideo = updateVideo(imp.getVideo(), position); + + return imp.toBuilder() + .bidfloor(extImpAlkimi.getBidFloor()) + .banner(updatedBanner) + .video(updatedVideo) + .ext(makeImpExt(updatedBanner, updatedVideo, extImpAlkimi)) + .build(); + } + + private Banner updateBanner(Banner banner, Integer position) { + if (banner == null || CollectionUtils.isEmpty(banner.getFormat())) { + return banner; + } + + final Format firstFormat = banner.getFormat().get(0); + return banner.toBuilder() + .w(firstFormat.getW()) + .h(firstFormat.getH()) + .pos(position) + .build(); + } + + private Video updateVideo(Video video, Integer position) { + return video != null ? video.toBuilder().pos(position).build() : null; + } + + private ObjectNode makeImpExt(Banner banner, Video video, ExtImpAlkimi extImpAlkimi) { + final ExtImpAlkimi.ExtImpAlkimiBuilder extBuilder = extImpAlkimi.toBuilder(); + + if (banner != null) { + extBuilder.width(banner.getW()); + extBuilder.height(banner.getH()); + extBuilder.impMediaType(TYPE_BANNER); + } + + if (video != null) { + extBuilder.width(video.getW()); + extBuilder.height(video.getH()); + extBuilder.impMediaType(TYPE_VIDEO); + } + + return mapper.mapper().valueToTree(ExtPrebid.of(null, extBuilder.build())); } @Override public final Result> makeBids(HttpCall httpCall, BidRequest bidRequest) { try { final BidResponse bidResponse = mapper.decodeValue(httpCall.getResponse().getBody(), BidResponse.class); - return Result.of(extractBids(httpCall.getRequest().getPayload(), bidResponse), Collections.emptyList()); + return Result.withValues(extractBids(httpCall.getRequest().getPayload(), bidResponse)); } catch (DecodeException | PreBidException e) { return Result.withError(BidderError.badServerResponse(e.getMessage())); } @@ -118,59 +166,4 @@ private static BidType getBidType(String impId, List imps) { } return bidType; } - - private ExtImpAlkimi parseImpExt(Imp imp) { - try { - return mapper.mapper().convertValue(imp.getExt(), ALKIMI_EXT_TYPE_REFERENCE).getBidder(); - } catch (IllegalArgumentException e) { - throw new PreBidException("Missing bidder ext in impression with id: " + imp.getId()); - } - } - - private ObjectNode writeImpExt(ExtImpAlkimi extImpAlkimi) { - try { - return mapper.mapper().convertValue(Map.of("bidder", extImpAlkimi), ObjectNode.class); - } catch (IllegalArgumentException e) { - throw new PreBidException("Error while writing Ext in Alkimi Bidder"); - } - } - - private Imp updateImp(Imp imp, ExtImpAlkimi ext) { - BigDecimal bidFloor = ext.getBidFloor(); - Integer position = ext.getPos(); - - Imp.ImpBuilder impBuilder = imp.toBuilder(); - ExtImpAlkimi.ExtImpAlkimiBuilder extBuilder = ext.toBuilder(); - impBuilder.bidfloor(bidFloor); - - if (imp.getBanner() != null) { - final Banner banner = imp.getBanner(); - if (CollectionUtils.isNotEmpty(banner.getFormat())) { - final Format firstFormat = banner.getFormat().get(0); - impBuilder - .banner(banner.toBuilder() - .w(firstFormat.getW()) - .h(firstFormat.getH()) - .pos(position) - .build()); - extBuilder.width(firstFormat.getW()); - extBuilder.height(firstFormat.getH()); - extBuilder.impMediaType(TYPE_BANNER); - } - } - - if (imp.getVideo() != null) { - Video video = imp.getVideo(); - impBuilder - .video(video.toBuilder() - .pos(position) - .build()); - extBuilder.width(video.getW()); - extBuilder.height(video.getH()); - extBuilder.impMediaType(TYPE_VIDEO); - } - - impBuilder.ext(writeImpExt(extBuilder.build())); - return impBuilder.build(); - } } diff --git a/src/main/java/org/prebid/server/proto/openrtb/ext/request/alkimi/ExtImpAlkimi.java b/src/main/java/org/prebid/server/proto/openrtb/ext/request/alkimi/ExtImpAlkimi.java index d916c49339b..83b0326a72d 100644 --- a/src/main/java/org/prebid/server/proto/openrtb/ext/request/alkimi/ExtImpAlkimi.java +++ b/src/main/java/org/prebid/server/proto/openrtb/ext/request/alkimi/ExtImpAlkimi.java @@ -17,8 +17,9 @@ public class ExtImpAlkimi { Integer pos; - int width; - int height; + Integer width; + + Integer height; @JsonProperty("impMediaType") String impMediaType; diff --git a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java index 7e0a2f016de..40f5458f878 100644 --- a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java @@ -1,6 +1,7 @@ package org.prebid.server.bidder.alkimi; import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.node.ObjectNode; import com.iab.openrtb.request.Banner; import com.iab.openrtb.request.BidRequest; import com.iab.openrtb.request.Format; @@ -22,6 +23,7 @@ import org.prebid.server.proto.openrtb.ext.request.alkimi.ExtImpAlkimi; import java.math.BigDecimal; +import java.util.Collections; import java.util.List; import java.util.function.Function; @@ -59,7 +61,7 @@ public void makeHttpRequestsShouldUseCorrectURL() { final Result>> result = alkimiBidder.makeHttpRequests(bidRequest); assertThat(result.getErrors()).isEmpty(); - assertThat(result.getValue()).hasSize(1) + assertThat(result.getValue()) .extracting(HttpRequest::getUri) .containsExactly(ENDPOINT_URL); } @@ -73,50 +75,14 @@ public void makeHttpRequestsShouldUpdateImps() { .imp(List.of(Imp.builder() .id(DIV_BANNER_ID) .bidfloor(BigDecimal.valueOf(0.2)) - .banner(Banner.builder() - .pos(5) - .w(300) - .h(250) - .format(List.of(Format.builder() - .w(300) - .h(250) - .build()) - ).build() - ) - .ext(mapper.valueToTree(ExtPrebid.of( - null, - ExtImpAlkimi.builder() - .token(PUB_TOKEN) - .bidFloor(BigDecimal.valueOf(0.2)) - .pos(5) - .width(300) - .height(250) - .impMediaType(TYPE_BANNER) - .build() - ))) + .banner(expectedBanner()) + .ext(expectedBannerExt()) .build(), Imp.builder() .id(DIV_VIDEO_ID) .bidfloor(BigDecimal.valueOf(0.3)) - .video(Video.builder() - .pos(7) - .w(1024) - .h(768) - .mimes(List.of("video/mp4")) - .protocols(List.of(1, 2, 3, 4, 5)) - .build() - ) - .ext(mapper.valueToTree(ExtPrebid.of( - null, - ExtImpAlkimi.builder() - .token(PUB_TOKEN) - .bidFloor(BigDecimal.valueOf(0.3)) - .pos(7) - .width(1024) - .height(768) - .impMediaType(TYPE_VIDEO) - .build() - ))) + .video(expectedVideo()) + .ext(expectedVideoExt()) .build()) ).build(); @@ -125,16 +91,64 @@ public void makeHttpRequestsShouldUpdateImps() { .containsExactly(expectedBidRequest); } + private Banner expectedBanner() { + return Banner.builder() + .pos(5) + .w(300) + .h(250) + .format(Collections.singletonList(Format.builder() + .w(300) + .h(250) + .build()) + ).build(); + } + + private ObjectNode expectedBannerExt() { + return mapper.valueToTree(ExtPrebid.of( + null, + ExtImpAlkimi.builder() + .token(PUB_TOKEN) + .bidFloor(BigDecimal.valueOf(0.2)) + .pos(5) + .width(300) + .height(250) + .impMediaType(TYPE_BANNER) + .build())); + } + + private Video expectedVideo() { + return Video.builder() + .pos(7) + .w(1024) + .h(768) + .mimes(List.of("video/mp4")) + .protocols(List.of(1, 2, 3, 4, 5)) + .build(); + } + + private ObjectNode expectedVideoExt() { + return mapper.valueToTree(ExtPrebid.of( + null, + ExtImpAlkimi.builder() + .token(PUB_TOKEN) + .bidFloor(BigDecimal.valueOf(0.3)) + .pos(7) + .width(1024) + .height(768) + .impMediaType(TYPE_VIDEO) + .build())); + } + @Test public void makeBidsShouldReturnErrorIfResponseBodyCouldNotBeParsed() { final HttpCall httpCall = givenHttpCall(null, "invalid"); final Result> result = alkimiBidder.makeBids(httpCall, null); - assertThat(result.getErrors()).hasSize(1); - assertThat(result.getErrors()).allMatch(error -> - error.getType() == BidderError.Type.bad_server_response + assertThat(result.getErrors()) + .hasSize(1) + .allMatch(error -> error.getType() == BidderError.Type.bad_server_response && error.getMessage().startsWith("Failed to decode: Unrecognized token") - ); + ); assertThat(result.getValue()).isEmpty(); } @@ -193,20 +207,18 @@ private static Imp givenBannerImp(Function impCu return impCustomizer.apply(Imp.builder() .id(DIV_BANNER_ID) .banner(Banner.builder() - .format(List.of(Format.builder() + .format(Collections.singletonList(Format.builder() .w(300) .h(250) .build()) - ).build() - ) + ).build()) .ext(mapper.valueToTree(ExtPrebid.of( null, ExtImpAlkimi.builder() .token(PUB_TOKEN) .bidFloor(BigDecimal.valueOf(0.2)) .pos(5) - .build() - ))) + .build()))) ).build(); } From 805b872c7410b248e75f59b93a861d21cd7952e7 Mon Sep 17 00:00:00 2001 From: alexander bogdanov Date: Wed, 4 May 2022 11:54:36 +0700 Subject: [PATCH 23/82] Alkimi Prebid Server Adapter test. Fixed unused imports --- src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java index e0b54cce6e2..2ba8d7bf6f1 100644 --- a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java +++ b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java @@ -25,11 +25,9 @@ import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.util.HttpUtil; -import java.math.BigDecimal; import java.util.Collection; import java.util.Collections; import java.util.List; -import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; From 6b2199101f7a52016155b34ee3c46a60c77eccdd Mon Sep 17 00:00:00 2001 From: motors Date: Thu, 5 May 2022 20:50:35 +0700 Subject: [PATCH 24/82] Alkimi Bidder, format fixes --- .../server/bidder/alkimi/AlkimiBidderTest.java | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java index 40f5458f878..fa8f6197380 100644 --- a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java @@ -147,8 +147,7 @@ public void makeBidsShouldReturnErrorIfResponseBodyCouldNotBeParsed() { assertThat(result.getErrors()) .hasSize(1) .allMatch(error -> error.getType() == BidderError.Type.bad_server_response - && error.getMessage().startsWith("Failed to decode: Unrecognized token") - ); + && error.getMessage().startsWith("Failed to decode: Unrecognized token")); assertThat(result.getValue()).isEmpty(); } @@ -165,8 +164,7 @@ public void makeBidsShouldReturnEmptyListIfBidResponseIsNull() throws JsonProces public void makeBidsShouldReturnEmptyListIfBidResponseSeatBidIsNull() throws JsonProcessingException { final HttpCall httpCall = givenHttpCall( null, - mapper.writeValueAsString(BidResponse.builder().build()) - ); + mapper.writeValueAsString(BidResponse.builder().build())); final Result> result = alkimiBidder.makeBids(httpCall, null); assertThat(result.getErrors()).isEmpty(); @@ -177,8 +175,7 @@ public void makeBidsShouldReturnEmptyListIfBidResponseSeatBidIsNull() throws Jso public void makeBidsShouldReturnBidsForBannerAndVideoImps() throws JsonProcessingException { final HttpCall httpCall = givenHttpCall( givenBidRequest(), - mapper.writeValueAsString(givenBidResponse()) - ); + mapper.writeValueAsString(givenBidResponse())); final Result> result = alkimiBidder.makeBids(httpCall, null); assertThat(result.getErrors()).isEmpty(); @@ -230,16 +227,14 @@ private static Imp givenVideoImp(Function impCus .h(768) .mimes(List.of("video/mp4")) .protocols(List.of(1, 2, 3, 4, 5)) - .build() - ) + .build()) .ext(mapper.valueToTree(ExtPrebid.of( null, ExtImpAlkimi.builder() .token(PUB_TOKEN) .bidFloor(BigDecimal.valueOf(0.3)) .pos(7) - .build() - ))) + .build()))) ).build(); } From de9d977c6a35d5909b5ef14d1062b0cb7872aba6 Mon Sep 17 00:00:00 2001 From: motors Date: Wed, 11 May 2022 16:45:50 +0700 Subject: [PATCH 25/82] Alkimi Bidder, change maintainer info --- src/main/resources/bidder-config/alkimi.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/bidder-config/alkimi.yaml b/src/main/resources/bidder-config/alkimi.yaml index d82e3b4dc8f..101824ee170 100644 --- a/src/main/resources/bidder-config/alkimi.yaml +++ b/src/main/resources/bidder-config/alkimi.yaml @@ -2,7 +2,7 @@ adapters: alkimi: endpoint: https://exchange.alkimi-onboarding.com/server/bid meta-info: - maintainer-email: abogdanov@asteriosoft.com + maintainer-email: kalidas@alkimiexchange.com app-media-types: - banner - video From 72e3fb8859e7bf2b9163a2602ca07236e56f8d09 Mon Sep 17 00:00:00 2001 From: alexander bogdanov Date: Mon, 16 May 2022 15:17:10 +0700 Subject: [PATCH 26/82] Alkimi Prebid Server Adapter. Test file update --- .../it/openrtb2/alkimi/test-alkimi-bid-request.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-request.json b/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-request.json index 5fc2f2c0d0c..71128665644 100644 --- a/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-request.json +++ b/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-request.json @@ -45,5 +45,17 @@ "ext": { "gdpr": 0 } + }, + "ext": { + "prebid": { + "pbs": { + "endpoint": "/openrtb2/auction" + }, + "server": { + "externalurl": "http://localhost:8080", + "gvlid": 1, + "datacenter": "local" + } + } } } From 016006959cebd83345449d2560668ede07196a5a Mon Sep 17 00:00:00 2001 From: alexander bogdanov Date: Tue, 8 Nov 2022 13:54:50 +0100 Subject: [PATCH 27/82] Add adUnitCode to Alkimi Ext --- .../java/org/prebid/server/bidder/alkimi/AlkimiBidder.java | 6 ++++-- .../proto/openrtb/ext/request/alkimi/ExtImpAlkimi.java | 3 +++ .../org/prebid/server/bidder/alkimi/AlkimiBidderTest.java | 2 ++ .../server/it/openrtb2/alkimi/test-alkimi-bid-request.json | 3 ++- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java index cbd1370f3a2..0b81aa2f87b 100644 --- a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java +++ b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java @@ -80,7 +80,7 @@ private Imp updateImp(Imp imp, ExtImpAlkimi extImpAlkimi) { .bidfloor(extImpAlkimi.getBidFloor()) .banner(updatedBanner) .video(updatedVideo) - .ext(makeImpExt(updatedBanner, updatedVideo, extImpAlkimi)) + .ext(makeImpExt(imp, updatedBanner, updatedVideo, extImpAlkimi)) .build(); } @@ -101,7 +101,7 @@ private Video updateVideo(Video video, Integer position) { return video != null ? video.toBuilder().pos(position).build() : null; } - private ObjectNode makeImpExt(Banner banner, Video video, ExtImpAlkimi extImpAlkimi) { + private ObjectNode makeImpExt(Imp imp, Banner banner, Video video, ExtImpAlkimi extImpAlkimi) { final ExtImpAlkimi.ExtImpAlkimiBuilder extBuilder = extImpAlkimi.toBuilder(); if (banner != null) { @@ -116,6 +116,8 @@ private ObjectNode makeImpExt(Banner banner, Video video, ExtImpAlkimi extImpAlk extBuilder.impMediaType(TYPE_VIDEO); } + extBuilder.adUnitCode(imp.getId()); + return mapper.mapper().valueToTree(ExtPrebid.of(null, extBuilder.build())); } diff --git a/src/main/java/org/prebid/server/proto/openrtb/ext/request/alkimi/ExtImpAlkimi.java b/src/main/java/org/prebid/server/proto/openrtb/ext/request/alkimi/ExtImpAlkimi.java index 83b0326a72d..ed5cb329df4 100644 --- a/src/main/java/org/prebid/server/proto/openrtb/ext/request/alkimi/ExtImpAlkimi.java +++ b/src/main/java/org/prebid/server/proto/openrtb/ext/request/alkimi/ExtImpAlkimi.java @@ -23,4 +23,7 @@ public class ExtImpAlkimi { @JsonProperty("impMediaType") String impMediaType; + + @JsonProperty("adUnitCode") + String adUnitCode; } diff --git a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java index 41c3df7ff63..d6d4f706c47 100644 --- a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java @@ -113,6 +113,7 @@ private ObjectNode expectedBannerExt() { .width(300) .height(250) .impMediaType(TYPE_BANNER) + .adUnitCode(DIV_BANNER_ID) .build())); } @@ -136,6 +137,7 @@ private ObjectNode expectedVideoExt() { .width(1024) .height(768) .impMediaType(TYPE_VIDEO) + .adUnitCode(DIV_VIDEO_ID) .build())); } diff --git a/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-request.json b/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-request.json index 71128665644..e3e05d48524 100644 --- a/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-request.json +++ b/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-request.json @@ -17,7 +17,8 @@ "bidFloor": 0.5, "width": 640, "height": 480, - "impMediaType": "Video" + "impMediaType": "Video", + "adUnitCode": "imp_id" } } } From 9bab92eb8959a8fc5e2b5becac79a8d6ff040e1e Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Tue, 8 Nov 2022 14:11:37 +0100 Subject: [PATCH 28/82] Alkimi Bidder, fix config --- src/main/resources/bidder-config/alkimi.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/bidder-config/alkimi.yaml b/src/main/resources/bidder-config/alkimi.yaml index d0ead131626..1f55174dbf5 100644 --- a/src/main/resources/bidder-config/alkimi.yaml +++ b/src/main/resources/bidder-config/alkimi.yaml @@ -4,7 +4,7 @@ adapters: meta-info: maintainer-email: kalidas@alkimiexchange.com app-media-types: - - banner + - banner - video site-media-types: - banner From 16551393d25e6c08d688ade1ef66d210e8feca22 Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Wed, 15 Mar 2023 11:15:14 +0100 Subject: [PATCH 29/82] update alkimi support email --- src/main/resources/bidder-config/alkimi.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/bidder-config/alkimi.yaml b/src/main/resources/bidder-config/alkimi.yaml index 1f55174dbf5..d1727189204 100644 --- a/src/main/resources/bidder-config/alkimi.yaml +++ b/src/main/resources/bidder-config/alkimi.yaml @@ -2,7 +2,7 @@ adapters: alkimi: endpoint: https://exchange.alkimi-onboarding.com/server/bid meta-info: - maintainer-email: kalidas@alkimiexchange.com + maintainer-email: support@alkimi.org app-media-types: - banner - video From de3736b8e68cbd53284739fe090d3cca64b688f0 Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Mon, 24 Jul 2023 16:32:58 +0700 Subject: [PATCH 30/82] added jenkinsfile --- Jenkinsfile | 38 ++++++++++++++++++++++++++++++++++++++ pom.xml | 14 +++++++++++++- 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 Jenkinsfile diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 00000000000..971a14e0944 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,38 @@ +#!groovy + +pipeline { + environment { + // JAVA_HOME = "/opt/jdk-17.0.2" + MY_ENV = sh(returnStdout: true, script: + '''#!/bin/bash + if [[ $BRANCH_NAME =~ "release-" ]]; then echo prod; else echo dev; fi + ''' + ).trim() + MY_VERSION = sh(returnStdout: true, script: + '''#!/bin/bash + if [[ $BRANCH_NAME =~ "release-" ]]; then echo "${BRANCH_NAME}.${BUILD_ID}"; else echo "${BRANCH_NAME}.${BUILD_ID}-SNAPSHOT"; fi + ''' + ).trim() + } + options { + disableConcurrentBuilds() + } + agent any + stages { + stage('Build') { + steps { + script { + sh "echo ${BRANCH_NAME} ${GIT_BRANCH} ${GIT_COMMIT} ${MY_VERSION} ${MY_ENV}" + sh "mvn clean package -Dbuild.version=${MY_VERSION}" + } + } + } + stage('Publish') { + steps { + script { + sh "mvn deploy -Dbuild.version=${MY_VERSION}" + } + } + } + } +} diff --git a/pom.xml b/pom.xml index 8ff92face95..bc61156d27d 100644 --- a/pom.xml +++ b/pom.xml @@ -10,6 +10,7 @@ prebid-server + ${build.version} prebid-server Prebid Server (Server-side Header Bidding) @@ -21,7 +22,7 @@ UTF-8 UTF-8 - 17 + 11 ${java.version} ${java.version} @@ -96,6 +97,17 @@ 0.6.1 + + + artifactory.alkimi-onboarding-dev.com + https://artifactory.alkimi-onboarding-dev.com/artifactory/libs-snapshot-local + + + artifactory.alkimi-onboarding-dev.com + https://artifactory.alkimi-onboarding-dev.com/artifactory/libs-release-local + + + From ba1fc6191040600a1dff67ec0e1ee267e424bdce Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Mon, 24 Jul 2023 16:36:26 +0700 Subject: [PATCH 31/82] changed root pom --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index bc61156d27d..1dc7d38507f 100644 --- a/pom.xml +++ b/pom.xml @@ -915,8 +915,8 @@ org.apache.maven.plugins maven-compiler-plugin - 17 - 17 + 11 + 11 From 76612d6621b1d960e62f4d5acb5d803f816f13b6 Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Mon, 24 Jul 2023 16:42:18 +0700 Subject: [PATCH 32/82] changed java version to 17 --- Jenkinsfile | 2 +- pom.xml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 971a14e0944..45c11c886af 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -2,7 +2,7 @@ pipeline { environment { - // JAVA_HOME = "/opt/jdk-17.0.2" + JAVA_HOME = "/opt/jdk-17.0.2" MY_ENV = sh(returnStdout: true, script: '''#!/bin/bash if [[ $BRANCH_NAME =~ "release-" ]]; then echo prod; else echo dev; fi diff --git a/pom.xml b/pom.xml index 1dc7d38507f..da37068e9c8 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ UTF-8 UTF-8 - 11 + 17 ${java.version} ${java.version} @@ -915,8 +915,8 @@ org.apache.maven.plugins maven-compiler-plugin - 11 - 11 + 17 + 17 From 2964339058f20f365dd6a56ecd784a4a8d0ef4ac Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Mon, 24 Jul 2023 16:44:24 +0700 Subject: [PATCH 33/82] fixed java home --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 45c11c886af..6dde54504ce 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -2,7 +2,7 @@ pipeline { environment { - JAVA_HOME = "/opt/jdk-17.0.2" + JAVA_HOME = "/opt/java/jdk-17/" MY_ENV = sh(returnStdout: true, script: '''#!/bin/bash if [[ $BRANCH_NAME =~ "release-" ]]; then echo prod; else echo dev; fi From 08745313e00510e0373ba46cbd26e551722d464f Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Mon, 24 Jul 2023 17:06:40 +0700 Subject: [PATCH 34/82] disabled tests --- Jenkinsfile | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 6dde54504ce..b012ee7d3e9 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -23,7 +23,7 @@ pipeline { steps { script { sh "echo ${BRANCH_NAME} ${GIT_BRANCH} ${GIT_COMMIT} ${MY_VERSION} ${MY_ENV}" - sh "mvn clean package -Dbuild.version=${MY_VERSION}" + sh "mvn clean package -DskipTests=true -Dbuild.version=${MY_VERSION}" } } } @@ -34,5 +34,14 @@ pipeline { } } } + stage('Deploy to dev') { + when { + branch "master" + } + steps { + git branch: 'master', url: "git@github.com:Alkimi-Exchange/alkimi-ansible.git", credentialsId: 'ssh-alkimi-ansible' + sh "ansible-playbook ./apps/dev/prebid-server.yml" + } + } } } From 829af3bdff10456f680efcd990697600bccf7e5f Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Mon, 24 Jul 2023 17:12:23 +0700 Subject: [PATCH 35/82] changed jenkinsfile --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index b012ee7d3e9..f107d2d4b5a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -23,7 +23,7 @@ pipeline { steps { script { sh "echo ${BRANCH_NAME} ${GIT_BRANCH} ${GIT_COMMIT} ${MY_VERSION} ${MY_ENV}" - sh "mvn clean package -DskipTests=true -Dbuild.version=${MY_VERSION}" + sh "mvn clean package -Dmaven.test.skip=true -Dbuild.version=${MY_VERSION}" } } } From 77f282322786d4562f26922fe9580c5daa8db0f1 Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Mon, 24 Jul 2023 17:20:09 +0700 Subject: [PATCH 36/82] changed jenkinsfile --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index f107d2d4b5a..b5fe4ed41c7 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -30,7 +30,7 @@ pipeline { stage('Publish') { steps { script { - sh "mvn deploy -Dbuild.version=${MY_VERSION}" + sh "mvn deploy -Dmaven.test.skip=true -Dbuild.version=${MY_VERSION}" } } } From d0c736482909c0c7c845643a10bc6fff75892395 Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Mon, 24 Jul 2023 17:30:29 +0700 Subject: [PATCH 37/82] changed jenkinsfile --- Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Jenkinsfile b/Jenkinsfile index b5fe4ed41c7..21acdbab2a0 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -13,6 +13,7 @@ pipeline { if [[ $BRANCH_NAME =~ "release-" ]]; then echo "${BRANCH_NAME}.${BUILD_ID}"; else echo "${BRANCH_NAME}.${BUILD_ID}-SNAPSHOT"; fi ''' ).trim() + DO_API_TOKEN = vault path: 'jenkins/digitalocean', key: 'ro_token' } options { disableConcurrentBuilds() From 2dc714dbfd1d12b44ae15346f6c1fdc27ed83ebe Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Mon, 24 Jul 2023 14:02:51 +0200 Subject: [PATCH 38/82] spring-boot-maven-plugin change --- pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pom.xml b/pom.xml index da37068e9c8..dcc17ebc1c9 100644 --- a/pom.xml +++ b/pom.xml @@ -833,6 +833,8 @@ false true + org.prebid.server.Application + JAR From 929cb812d11de9f07bcb5be4638593eb1af058a1 Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Mon, 24 Jul 2023 14:10:25 +0200 Subject: [PATCH 39/82] spring-boot-maven-plugin change --- pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pom.xml b/pom.xml index dcc17ebc1c9..26a1ad18678 100644 --- a/pom.xml +++ b/pom.xml @@ -95,6 +95,8 @@ 1.6.2 3.0.0 0.6.1 + + org.prebid.server.Application From 28369862bf2495df07b48a76cb0a56c3a04a325a Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Mon, 24 Jul 2023 19:32:15 +0700 Subject: [PATCH 40/82] changed jenkinsfile --- Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 21acdbab2a0..8a74d395c85 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -24,14 +24,14 @@ pipeline { steps { script { sh "echo ${BRANCH_NAME} ${GIT_BRANCH} ${GIT_COMMIT} ${MY_VERSION} ${MY_ENV}" - sh "mvn clean package -Dmaven.test.skip=true -Dbuild.version=${MY_VERSION}" + sh "mvn clean package -DskipUnitTest=true -Dbuild.version=${MY_VERSION}" } } } stage('Publish') { steps { script { - sh "mvn deploy -Dmaven.test.skip=true -Dbuild.version=${MY_VERSION}" + sh "mvn deploy -DskipUnitTest=true -Dbuild.version=${MY_VERSION}" } } } From 24e65d6df5ab173ba8c3660f0da412b4765d5caa Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Mon, 24 Jul 2023 17:01:30 +0200 Subject: [PATCH 41/82] spring-boot-maven-plugin change --- pom.xml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/pom.xml b/pom.xml index 26a1ad18678..db0ab711169 100644 --- a/pom.xml +++ b/pom.xml @@ -832,19 +832,19 @@ org.springframework.boot spring-boot-maven-plugin ${spring.boot.version} - - false - true - org.prebid.server.Application - JAR - - - - - repackage - - - + + + + + + + + + + + + + io.fabric8 From 6b3416288cfd5161c9fd642d4e45db9e620814c9 Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Mon, 24 Jul 2023 17:08:12 +0200 Subject: [PATCH 42/82] spring-boot-maven-plugin change --- Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 8a74d395c85..6528c2fc4be 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -24,14 +24,14 @@ pipeline { steps { script { sh "echo ${BRANCH_NAME} ${GIT_BRANCH} ${GIT_COMMIT} ${MY_VERSION} ${MY_ENV}" - sh "mvn clean package -DskipUnitTest=true -Dbuild.version=${MY_VERSION}" + sh "mvn clean package -Dmaven.skip.test=true -Dbuild.version=${MY_VERSION}" } } } stage('Publish') { steps { script { - sh "mvn deploy -DskipUnitTest=true -Dbuild.version=${MY_VERSION}" + sh "mvn deploy -Dmaven.skip.test=true -Dbuild.version=${MY_VERSION}" } } } From 7241e43f5262a1c557b81b859b273e273264b694 Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Mon, 24 Jul 2023 17:16:02 +0200 Subject: [PATCH 43/82] spring-boot-maven-plugin change --- Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 6528c2fc4be..21acdbab2a0 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -24,14 +24,14 @@ pipeline { steps { script { sh "echo ${BRANCH_NAME} ${GIT_BRANCH} ${GIT_COMMIT} ${MY_VERSION} ${MY_ENV}" - sh "mvn clean package -Dmaven.skip.test=true -Dbuild.version=${MY_VERSION}" + sh "mvn clean package -Dmaven.test.skip=true -Dbuild.version=${MY_VERSION}" } } } stage('Publish') { steps { script { - sh "mvn deploy -Dmaven.skip.test=true -Dbuild.version=${MY_VERSION}" + sh "mvn deploy -Dmaven.test.skip=true -Dbuild.version=${MY_VERSION}" } } } From 6cfd230526735107d71af0e4c6a63af7b16e1d5a Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Mon, 24 Jul 2023 17:31:08 +0200 Subject: [PATCH 44/82] spring-boot-maven-plugin change --- pom.xml | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index db0ab711169..f743eadda52 100644 --- a/pom.xml +++ b/pom.xml @@ -831,7 +831,22 @@ org.springframework.boot spring-boot-maven-plugin - ${spring.boot.version} + + + + build-info + + + + ${project.build.sourceEncoding} + ${project.reporting.outputEncoding} + ${java.version} + ${java.version} + + + + + From a00b2846277962e42d85614748679fde07d13b82 Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Mon, 24 Jul 2023 22:39:07 +0200 Subject: [PATCH 45/82] spring-boot-maven-plugin change --- Jenkinsfile | 4 ++-- pom.xml | 48 ++++++++++++++++++++++++------------------------ 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 21acdbab2a0..59a8017fb9a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -24,14 +24,14 @@ pipeline { steps { script { sh "echo ${BRANCH_NAME} ${GIT_BRANCH} ${GIT_COMMIT} ${MY_VERSION} ${MY_ENV}" - sh "mvn clean package -Dmaven.test.skip=true -Dbuild.version=${MY_VERSION}" + sh "mvn clean package -Dmaven.test.skip=true -Drevision=${MY_VERSION}" } } } stage('Publish') { steps { script { - sh "mvn deploy -Dmaven.test.skip=true -Dbuild.version=${MY_VERSION}" + sh "mvn deploy -Dmaven.test.skip=true -Drevision=${MY_VERSION}" } } } diff --git a/pom.xml b/pom.xml index f743eadda52..4c4bdb89149 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ prebid-server - ${build.version} + ${revision} prebid-server Prebid Server (Server-side Header Bidding) @@ -831,35 +831,35 @@ org.springframework.boot spring-boot-maven-plugin - - - - build-info - - - - ${project.build.sourceEncoding} - ${project.reporting.outputEncoding} - ${java.version} - ${java.version} - - - - - - - - - - - - + + + + + + + + + + ${spring.boot.version} + + false + true + org.prebid.server.Application + JAR + + + + + repackage + + + io.fabric8 From b47b8a032d43f7882ff6379e596ca43e37921a59 Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Tue, 25 Jul 2023 12:10:56 +0700 Subject: [PATCH 46/82] changed java home --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 59a8017fb9a..cfc52d27d82 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -2,7 +2,7 @@ pipeline { environment { - JAVA_HOME = "/opt/java/jdk-17/" + JAVA_HOME = "/opt/java/jdk-17.0.2/" MY_ENV = sh(returnStdout: true, script: '''#!/bin/bash if [[ $BRANCH_NAME =~ "release-" ]]; then echo prod; else echo dev; fi From 804cb4ab54a39291740641bd396ac419a1b83d14 Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Tue, 25 Jul 2023 12:36:20 +0700 Subject: [PATCH 47/82] changed jenkinsfile --- Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Jenkinsfile b/Jenkinsfile index cfc52d27d82..7ab6542f510 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -3,6 +3,7 @@ pipeline { environment { JAVA_HOME = "/opt/java/jdk-17.0.2/" + CI = "false" MY_ENV = sh(returnStdout: true, script: '''#!/bin/bash if [[ $BRANCH_NAME =~ "release-" ]]; then echo prod; else echo dev; fi From cd1f59682c887d00612ed37a2464ebbf2444c503 Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Tue, 25 Jul 2023 12:45:22 +0700 Subject: [PATCH 48/82] changed root pom --- pom.xml | 36 +- pom.xml.old | 1004 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1007 insertions(+), 33 deletions(-) create mode 100644 pom.xml.old diff --git a/pom.xml b/pom.xml index 4c4bdb89149..18e315100df 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.prebid prebid-server-aggregator - 1.125.0-SNAPSHOT + 1.121.0-SNAPSHOT extra/pom.xml @@ -67,9 +67,9 @@ 3.24.2 2.35.0 4.2.0 - 9.4.51.v20230217 + 9.4.48.v20220622 4.4.0 - 2.2.220 + 2.1.214 2.4-M1-groovy-3.0 3.0.14 1.17.4 @@ -95,21 +95,8 @@ 1.6.2 3.0.0 0.6.1 - - org.prebid.server.Application - - - artifactory.alkimi-onboarding-dev.com - https://artifactory.alkimi-onboarding-dev.com/artifactory/libs-snapshot-local - - - artifactory.alkimi-onboarding-dev.com - https://artifactory.alkimi-onboarding-dev.com/artifactory/libs-release-local - - - @@ -831,27 +818,10 @@ org.springframework.boot spring-boot-maven-plugin - - - - - - - - - - - - - - - ${spring.boot.version} false true - org.prebid.server.Application - JAR diff --git a/pom.xml.old b/pom.xml.old new file mode 100644 index 00000000000..4c4bdb89149 --- /dev/null +++ b/pom.xml.old @@ -0,0 +1,1004 @@ + + + 4.0.0 + + + org.prebid + prebid-server-aggregator + 1.125.0-SNAPSHOT + extra/pom.xml + + + prebid-server + ${revision} + + prebid-server + Prebid Server (Server-side Header Bidding) + + Prebid.org + https://prebid.org/ + + + + UTF-8 + UTF-8 + 17 + ${java.version} + ${java.version} + + + 2.5.6 + 1.3.1 + 2.0.1.Final + 6.1.5.Final + 3.9.10 + 4.1.69.Final + 1.18.24 + 3.12.0 + 4.4 + 1.21 + 3.6.1 + 4.5.13 + 5.3.1 + 2.14.1 + 1.0.76 + 1.13 + 8.0.28 + 42.4.3 + 2.6.2 + 2.2.0 + 4.0.3 + 1.2.2 + 2.0.2 + 2.0.7 + 0.12.0 + 2.12.0 + 1.2.11 + 2.19.0 + 5.0.1 + 3.0.10 + 3.21.7 + 3.17.0 + + + 4.13.2 + 5.9.2 + 4.11.0 + 3.24.2 + 2.35.0 + 4.2.0 + 9.4.51.v20230217 + 4.4.0 + 2.2.220 + 2.4-M1-groovy-3.0 + 3.0.14 + 1.17.4 + 5.14.0 + 2.19.0 + 1.9.9.1 + 1.12.14 + + + 3.1.2 + 10.3 + 1.2.0 + 0.8.7 + 2.2.4 + 3.10.1 + 2.22.2 + ${maven-surefire-plugin.version} + 0.40.2 + 1.13.1 + 2.10.0 + false + false + 1.6.2 + 3.0.0 + 0.6.1 + + org.prebid.server.Application + + + + + artifactory.alkimi-onboarding-dev.com + https://artifactory.alkimi-onboarding-dev.com/artifactory/libs-snapshot-local + + + artifactory.alkimi-onboarding-dev.com + https://artifactory.alkimi-onboarding-dev.com/artifactory/libs-release-local + + + + + + + org.springframework.boot + spring-boot-dependencies + ${spring.boot.version} + pom + import + + + + + + + org.springframework.boot + spring-boot-starter + ${spring.boot.version} + + + org.springframework.boot + spring-boot-starter-aop + ${spring.boot.version} + + + javax.annotation + javax.annotation-api + ${javax.annotation-api.version} + + + javax.validation + validation-api + ${validation-api.version} + + + org.hibernate.validator + hibernate-validator + ${hibernate-validator.version} + + + io.vertx + vertx-core + ${vertx.version} + + + io.vertx + vertx-web + ${vertx.version} + + + io.vertx + vertx-config + ${vertx.version} + + + io.vertx + vertx-jdbc-client + ${vertx.version} + + + io.vertx + vertx-circuit-breaker + ${vertx.version} + + + io.vertx + vertx-dropwizard-metrics + ${vertx.version} + + + io.vertx + vertx-auth-common + ${vertx.version} + + + io.netty + netty-transport-native-epoll + linux-x86_64 + ${netty.version} + + + org.projectlombok + lombok + ${lombok.version} + provided + + + org.apache.commons + commons-lang3 + ${commons.version} + + + org.apache.commons + commons-collections4 + ${commons.collections.version} + + + org.apache.commons + commons-compress + ${commons.compress.version} + + + org.apache.commons + commons-math3 + ${commons-math3.version} + + + org.apache.httpcomponents + httpclient + ${httpclient.version} + + + com.github.seancfoley + ipaddress + ${ipaddress.version} + + + com.fasterxml.jackson.core + jackson-core + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-annotations + ${jackson.version} + + + com.fasterxml.jackson.dataformat + jackson-dataformat-yaml + ${jackson.version} + + + com.fasterxml.jackson.module + jackson-module-blackbird + ${jackson.version} + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + ${jackson.version} + test + + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + ${jackson.version} + test + + + com.networknt + json-schema-validator + ${json-schema-validator.version} + + + com.github.java-json-tools + json-patch + ${jsonpatch.version} + + + mysql + mysql-connector-java + ${mysql.version} + + + org.postgresql + postgresql + ${postgresql.version} + + + com.github.ben-manes.caffeine + caffeine + ${caffeine.version} + + + de.malkusch.whois-server-list + public-suffix-list + ${psl.version} + + + com.google.code.findbugs + jsr305 + + + + + io.dropwizard.metrics + metrics-core + ${metrics.version} + + + io.dropwizard.metrics + metrics-jvm + ${metrics.version} + + + io.dropwizard.metrics + metrics-graphite + ${metrics.version} + + + com.izettle + dropwizard-metrics-influxdb + ${metrics-influxdb.version} + + + io.dropwizard + dropwizard-metrics + + + org.apache.kafka + kafka-clients + + + + + com.conversantmedia.gdpr + consent-string-sdk-java + ${consent-string-sdk.version} + + + com.iabtcf + iabtcf-decoder + ${iabtcf.version} + + + io.prometheus + simpleclient_vertx + ${metrics-prometheus.version} + + + io.prometheus + simpleclient_dropwizard + ${metrics-prometheus.version} + + + com.maxmind.geoip2 + geoip2 + ${maxmind-client.version} + + + + ch.qos.logback + logback-classic + ${logback.version} + + + ch.qos.logback + logback-core + ${logback.version} + + + org.apache.logging.log4j + log4j-to-slf4j + ${log4j.version} + + + org.apache.logging.log4j + log4j-api + ${log4j.version} + + + com.zaxxer + HikariCP + ${hikari.version} + + + com.iabgpp + iabgpp-encoder + ${gpp-encoder.version} + + + com.google.protobuf + protobuf-java-util + ${protobuf.version} + + + com.google.protobuf + protobuf-java + ${protobuf.version} + + + + junit + junit + ${junit.version} + test + + + org.junit.vintage + junit-vintage-engine + ${junit-jupiter.version} + test + + + org.mockito + mockito-core + ${mockito.version} + test + + + org.mockito + mockito-junit-jupiter + ${mockito.version} + test + + + org.assertj + assertj-core + ${assertj.version} + test + + + org.awaitility + awaitility + ${awaitility.version} + test + + + org.springframework.boot + spring-boot-starter-test + test + + + io.vertx + vertx-unit + ${vertx.version} + test + + + com.github.tomakehurst + wiremock-jre8 + ${wiremock.version} + test + + + com.iabtcf + iabtcf-encoder + ${iabtcf.version} + test + + + org.eclipse.jetty + jetty-server + ${jetty.version} + test + + + org.eclipse.jetty + jetty-servlet + ${jetty.version} + test + + + org.eclipse.jetty + jetty-servlets + ${jetty.version} + test + + + org.eclipse.jetty + jetty-webapp + ${jetty.version} + test + + + org.eclipse.jetty + jetty-http + ${jetty.version} + test + + + org.eclipse.jetty + jetty-io + ${jetty.version} + test + + + org.eclipse.jetty + jetty-security + ${jetty.version} + test + + + org.eclipse.jetty + jetty-continuation + ${jetty.version} + test + + + org.eclipse.jetty + jetty-util + ${jetty.version} + test + + + org.eclipse.jetty + jetty-xml + ${jetty.version} + test + + + io.rest-assured + rest-assured + ${restassured.version} + test + + + net.bytebuddy + byte-buddy + ${bytebuddy.version} + test + + + org.spockframework + spock-core + ${spock.version} + test + + + org.codehaus.groovy + groovy + ${groovy.version} + test + + + org.codehaus.groovy + groovy-yaml + ${groovy.version} + test + + + org.hibernate + hibernate-core + test + + + + io.vertx + vertx-codegen + ${vertx.version} + test + + + com.h2database + h2 + ${h2.version} + test + + + org.testcontainers + testcontainers + ${testcontainers.version} + test + + + org.testcontainers + mockserver + ${testcontainers.version} + test + + + org.testcontainers + mysql + ${testcontainers.version} + test + + + org.mock-server + mockserver-client-java + ${mockserver.version} + test + + + io.qameta.allure + allure-java-commons + ${allure.version} + test + + + + + ${project.name} + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + false + + ${skipUnitTests} + + + + org.apache.maven.plugins + maven-failsafe-plugin + ${maven-failsafe-plugin.version} + + + true + + ${skipFunctionalTests} + + + + org.apache.maven.plugins + maven-checkstyle-plugin + ${checkstyle-plugin.version} + + + checkstyle.xml + UTF-8 + true + + true + false + true + + + + com.puppycrawl.tools + checkstyle + ${checkstyle.version} + + + + + org.codehaus.gmavenplus + gmavenplus-plugin + ${gmavenplus-plugin.version} + + + + + + + + kr.motd.maven + os-maven-plugin + ${os-maven-plugin.version} + + + + + org.codehaus.mojo + build-helper-maven-plugin + ${build-helper-maven-plugin.version} + + + add-test-sources + none + + add-test-source + + + + + + org.apache.maven.plugins + maven-checkstyle-plugin + + + validate + + checkstyle + + + + + + org.xolstice.maven.plugins + protobuf-maven-plugin + ${protobuf-maven-plugin.version} + true + + + process-sources + + compile + test-compile + + + + + + ${project.basedir}/src/main/proto + ${project.basedir}/src/test/proto + + com.google.protobuf:protoc:${protoc.version}:exe:${os.detected.classifier} + + + + com.googlecode.maven-download-plugin + download-maven-plugin + ${download-plugin.version} + + + iab_proto_file + generate-sources + + wget + + + https://raw.githubusercontent.com/IABTechLab/openrtb-proto-v2/master/openrtb-core/src/main/protobuf/openrtb.proto + ${project.basedir}/src/main/proto + openrtb.proto + + + + xapi_proto_file + generate-sources + + wget + + + https://raw.githubusercontent.com/MagniteEngineering/xapi-proto/main/src/proto/com/magnite/openrtb/v2/openrtb-xapi.proto + ${project.basedir}/src/main/proto + openrtb-xapi.proto + + + + tld_names + generate-resources + + wget + + + https://publicsuffix.org/list/effective_tld_names.dat + ${project.build.outputDirectory} + effective_tld_names.dat + + + + + + org.jacoco + jacoco-maven-plugin + ${jacoco-plugin.version} + + + com/iab/openrtb/** + **/proto/** + **/model/** + org/prebid/server/spring/config/** + + + + + prepare-agent + + prepare-agent + + + + report + + report + + + + check + + check + + + + + BUNDLE + + + INSTRUCTION + COVEREDRATIO + 90% + + + + + + + + + + pl.project13.maven + git-commit-id-plugin + ${git-commmit-plugin.version} + + + get-the-git-infos + + revision + + + + + ${project.basedir}/.git + git + false + true + ${project.build.outputDirectory}/git-revision.json + + json + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + + + + + + + + + + + ${spring.boot.version} + + false + true + org.prebid.server.Application + JAR + + + + + repackage + + + + + + io.fabric8 + docker-maven-plugin + ${docker-maven-plugin.version} + + + build-containers + pre-integration-test + + build + + + + + + org.codehaus.gmavenplus + gmavenplus-plugin + + true + + + + + compileTests + + + + + + org.apache.maven.plugins + maven-failsafe-plugin + + + -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar" + + + target/allure-results + ${mockserver.version} + ${project.version} + 2 + false + + + + + + integration-test + verify + + + + **/*Spec.java + + + + + + + org.aspectj + aspectjweaver + ${aspectj.version} + + + + + io.qameta.allure + allure-maven + ${allure-maven.version} + + + org.apache.maven.plugins + maven-compiler-plugin + + 17 + 17 + + + + + + + + + org.apache.maven.plugins + maven-checkstyle-plugin + + + + checkstyle + + + + + + org.jacoco + jacoco-maven-plugin + + + + report + + + + + + + + + + + Container debugging + + + + org.apache.maven.plugins + maven-failsafe-plugin + + + true + + + + + + + + + Apple M silicon + + + Mac + aarch64 + + + + osx-x86_64 + + + + From 9f72a1c2cd36ae5a31bf63f524ccca332ece8525 Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Tue, 25 Jul 2023 12:50:22 +0700 Subject: [PATCH 49/82] changed root pom --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 18e315100df..417797258d3 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.prebid prebid-server-aggregator - 1.121.0-SNAPSHOT + 1.125.0-SNAPSHOT extra/pom.xml From 4992dd6f5688e259205e881dec11ad55fe48b799 Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Tue, 25 Jul 2023 12:57:58 +0700 Subject: [PATCH 50/82] changed root pom --- pom.xml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/pom.xml b/pom.xml index 417797258d3..5d9327ebd1f 100644 --- a/pom.xml +++ b/pom.xml @@ -97,6 +97,17 @@ 0.6.1 + + + artifactory.alkimi-onboarding-dev.com + https://artifactory.alkimi-onboarding-dev.com/artifactory/libs-snapshot-local + + + artifactory.alkimi-onboarding-dev.com + https://artifactory.alkimi-onboarding-dev.com/artifactory/libs-release-local + + + From f07faf5ac8888a46d960880ae6a7eb7638e25a3c Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Tue, 25 Jul 2023 14:38:01 +0700 Subject: [PATCH 51/82] changed jenkinsfile --- Jenkinsfile | 18 +- pom.xml | 23 +- pom.xml.old | 1004 --------------------------------------------------- 3 files changed, 31 insertions(+), 1014 deletions(-) delete mode 100644 pom.xml.old diff --git a/Jenkinsfile b/Jenkinsfile index 7ab6542f510..97cd9138621 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -18,6 +18,8 @@ pipeline { } options { disableConcurrentBuilds() + buildDiscarder(logRotator(artifactNumToKeepStr: '3')) + copyArtifactPermission('deployment') } agent any stages { @@ -29,20 +31,20 @@ pipeline { } } } - stage('Publish') { - steps { - script { - sh "mvn deploy -Dmaven.test.skip=true -Drevision=${MY_VERSION}" - } - } - } + // stage('Publish') { + // steps { + // script { + // sh "mvn deploy -Dmaven.test.skip=true -Drevision=${MY_VERSION}" + // } + // } + // } stage('Deploy to dev') { when { branch "master" } steps { git branch: 'master', url: "git@github.com:Alkimi-Exchange/alkimi-ansible.git", credentialsId: 'ssh-alkimi-ansible' - sh "ansible-playbook ./apps/dev/prebid-server.yml" + sh "ansible-playbook ./apps/dev/prebid-server.yml --extra-vars='artifactPath=${env.WORKSPACE}/target/prebid-server.jar'" } } } diff --git a/pom.xml b/pom.xml index 5d9327ebd1f..4c4bdb89149 100644 --- a/pom.xml +++ b/pom.xml @@ -67,9 +67,9 @@ 3.24.2 2.35.0 4.2.0 - 9.4.48.v20220622 + 9.4.51.v20230217 4.4.0 - 2.1.214 + 2.2.220 2.4-M1-groovy-3.0 3.0.14 1.17.4 @@ -95,6 +95,8 @@ 1.6.2 3.0.0 0.6.1 + + org.prebid.server.Application @@ -829,10 +831,27 @@ org.springframework.boot spring-boot-maven-plugin + + + + + + + + + + + + + + + ${spring.boot.version} false true + org.prebid.server.Application + JAR diff --git a/pom.xml.old b/pom.xml.old deleted file mode 100644 index 4c4bdb89149..00000000000 --- a/pom.xml.old +++ /dev/null @@ -1,1004 +0,0 @@ - - - 4.0.0 - - - org.prebid - prebid-server-aggregator - 1.125.0-SNAPSHOT - extra/pom.xml - - - prebid-server - ${revision} - - prebid-server - Prebid Server (Server-side Header Bidding) - - Prebid.org - https://prebid.org/ - - - - UTF-8 - UTF-8 - 17 - ${java.version} - ${java.version} - - - 2.5.6 - 1.3.1 - 2.0.1.Final - 6.1.5.Final - 3.9.10 - 4.1.69.Final - 1.18.24 - 3.12.0 - 4.4 - 1.21 - 3.6.1 - 4.5.13 - 5.3.1 - 2.14.1 - 1.0.76 - 1.13 - 8.0.28 - 42.4.3 - 2.6.2 - 2.2.0 - 4.0.3 - 1.2.2 - 2.0.2 - 2.0.7 - 0.12.0 - 2.12.0 - 1.2.11 - 2.19.0 - 5.0.1 - 3.0.10 - 3.21.7 - 3.17.0 - - - 4.13.2 - 5.9.2 - 4.11.0 - 3.24.2 - 2.35.0 - 4.2.0 - 9.4.51.v20230217 - 4.4.0 - 2.2.220 - 2.4-M1-groovy-3.0 - 3.0.14 - 1.17.4 - 5.14.0 - 2.19.0 - 1.9.9.1 - 1.12.14 - - - 3.1.2 - 10.3 - 1.2.0 - 0.8.7 - 2.2.4 - 3.10.1 - 2.22.2 - ${maven-surefire-plugin.version} - 0.40.2 - 1.13.1 - 2.10.0 - false - false - 1.6.2 - 3.0.0 - 0.6.1 - - org.prebid.server.Application - - - - - artifactory.alkimi-onboarding-dev.com - https://artifactory.alkimi-onboarding-dev.com/artifactory/libs-snapshot-local - - - artifactory.alkimi-onboarding-dev.com - https://artifactory.alkimi-onboarding-dev.com/artifactory/libs-release-local - - - - - - - org.springframework.boot - spring-boot-dependencies - ${spring.boot.version} - pom - import - - - - - - - org.springframework.boot - spring-boot-starter - ${spring.boot.version} - - - org.springframework.boot - spring-boot-starter-aop - ${spring.boot.version} - - - javax.annotation - javax.annotation-api - ${javax.annotation-api.version} - - - javax.validation - validation-api - ${validation-api.version} - - - org.hibernate.validator - hibernate-validator - ${hibernate-validator.version} - - - io.vertx - vertx-core - ${vertx.version} - - - io.vertx - vertx-web - ${vertx.version} - - - io.vertx - vertx-config - ${vertx.version} - - - io.vertx - vertx-jdbc-client - ${vertx.version} - - - io.vertx - vertx-circuit-breaker - ${vertx.version} - - - io.vertx - vertx-dropwizard-metrics - ${vertx.version} - - - io.vertx - vertx-auth-common - ${vertx.version} - - - io.netty - netty-transport-native-epoll - linux-x86_64 - ${netty.version} - - - org.projectlombok - lombok - ${lombok.version} - provided - - - org.apache.commons - commons-lang3 - ${commons.version} - - - org.apache.commons - commons-collections4 - ${commons.collections.version} - - - org.apache.commons - commons-compress - ${commons.compress.version} - - - org.apache.commons - commons-math3 - ${commons-math3.version} - - - org.apache.httpcomponents - httpclient - ${httpclient.version} - - - com.github.seancfoley - ipaddress - ${ipaddress.version} - - - com.fasterxml.jackson.core - jackson-core - ${jackson.version} - - - com.fasterxml.jackson.core - jackson-databind - ${jackson.version} - - - com.fasterxml.jackson.core - jackson-annotations - ${jackson.version} - - - com.fasterxml.jackson.dataformat - jackson-dataformat-yaml - ${jackson.version} - - - com.fasterxml.jackson.module - jackson-module-blackbird - ${jackson.version} - - - com.fasterxml.jackson.datatype - jackson-datatype-jsr310 - ${jackson.version} - test - - - com.fasterxml.jackson.dataformat - jackson-dataformat-xml - ${jackson.version} - test - - - com.networknt - json-schema-validator - ${json-schema-validator.version} - - - com.github.java-json-tools - json-patch - ${jsonpatch.version} - - - mysql - mysql-connector-java - ${mysql.version} - - - org.postgresql - postgresql - ${postgresql.version} - - - com.github.ben-manes.caffeine - caffeine - ${caffeine.version} - - - de.malkusch.whois-server-list - public-suffix-list - ${psl.version} - - - com.google.code.findbugs - jsr305 - - - - - io.dropwizard.metrics - metrics-core - ${metrics.version} - - - io.dropwizard.metrics - metrics-jvm - ${metrics.version} - - - io.dropwizard.metrics - metrics-graphite - ${metrics.version} - - - com.izettle - dropwizard-metrics-influxdb - ${metrics-influxdb.version} - - - io.dropwizard - dropwizard-metrics - - - org.apache.kafka - kafka-clients - - - - - com.conversantmedia.gdpr - consent-string-sdk-java - ${consent-string-sdk.version} - - - com.iabtcf - iabtcf-decoder - ${iabtcf.version} - - - io.prometheus - simpleclient_vertx - ${metrics-prometheus.version} - - - io.prometheus - simpleclient_dropwizard - ${metrics-prometheus.version} - - - com.maxmind.geoip2 - geoip2 - ${maxmind-client.version} - - - - ch.qos.logback - logback-classic - ${logback.version} - - - ch.qos.logback - logback-core - ${logback.version} - - - org.apache.logging.log4j - log4j-to-slf4j - ${log4j.version} - - - org.apache.logging.log4j - log4j-api - ${log4j.version} - - - com.zaxxer - HikariCP - ${hikari.version} - - - com.iabgpp - iabgpp-encoder - ${gpp-encoder.version} - - - com.google.protobuf - protobuf-java-util - ${protobuf.version} - - - com.google.protobuf - protobuf-java - ${protobuf.version} - - - - junit - junit - ${junit.version} - test - - - org.junit.vintage - junit-vintage-engine - ${junit-jupiter.version} - test - - - org.mockito - mockito-core - ${mockito.version} - test - - - org.mockito - mockito-junit-jupiter - ${mockito.version} - test - - - org.assertj - assertj-core - ${assertj.version} - test - - - org.awaitility - awaitility - ${awaitility.version} - test - - - org.springframework.boot - spring-boot-starter-test - test - - - io.vertx - vertx-unit - ${vertx.version} - test - - - com.github.tomakehurst - wiremock-jre8 - ${wiremock.version} - test - - - com.iabtcf - iabtcf-encoder - ${iabtcf.version} - test - - - org.eclipse.jetty - jetty-server - ${jetty.version} - test - - - org.eclipse.jetty - jetty-servlet - ${jetty.version} - test - - - org.eclipse.jetty - jetty-servlets - ${jetty.version} - test - - - org.eclipse.jetty - jetty-webapp - ${jetty.version} - test - - - org.eclipse.jetty - jetty-http - ${jetty.version} - test - - - org.eclipse.jetty - jetty-io - ${jetty.version} - test - - - org.eclipse.jetty - jetty-security - ${jetty.version} - test - - - org.eclipse.jetty - jetty-continuation - ${jetty.version} - test - - - org.eclipse.jetty - jetty-util - ${jetty.version} - test - - - org.eclipse.jetty - jetty-xml - ${jetty.version} - test - - - io.rest-assured - rest-assured - ${restassured.version} - test - - - net.bytebuddy - byte-buddy - ${bytebuddy.version} - test - - - org.spockframework - spock-core - ${spock.version} - test - - - org.codehaus.groovy - groovy - ${groovy.version} - test - - - org.codehaus.groovy - groovy-yaml - ${groovy.version} - test - - - org.hibernate - hibernate-core - test - - - - io.vertx - vertx-codegen - ${vertx.version} - test - - - com.h2database - h2 - ${h2.version} - test - - - org.testcontainers - testcontainers - ${testcontainers.version} - test - - - org.testcontainers - mockserver - ${testcontainers.version} - test - - - org.testcontainers - mysql - ${testcontainers.version} - test - - - org.mock-server - mockserver-client-java - ${mockserver.version} - test - - - io.qameta.allure - allure-java-commons - ${allure.version} - test - - - - - ${project.name} - - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - - org.apache.maven.plugins - maven-surefire-plugin - ${maven-surefire-plugin.version} - - - false - - ${skipUnitTests} - - - - org.apache.maven.plugins - maven-failsafe-plugin - ${maven-failsafe-plugin.version} - - - true - - ${skipFunctionalTests} - - - - org.apache.maven.plugins - maven-checkstyle-plugin - ${checkstyle-plugin.version} - - - checkstyle.xml - UTF-8 - true - - true - false - true - - - - com.puppycrawl.tools - checkstyle - ${checkstyle.version} - - - - - org.codehaus.gmavenplus - gmavenplus-plugin - ${gmavenplus-plugin.version} - - - - - - - - kr.motd.maven - os-maven-plugin - ${os-maven-plugin.version} - - - - - org.codehaus.mojo - build-helper-maven-plugin - ${build-helper-maven-plugin.version} - - - add-test-sources - none - - add-test-source - - - - - - org.apache.maven.plugins - maven-checkstyle-plugin - - - validate - - checkstyle - - - - - - org.xolstice.maven.plugins - protobuf-maven-plugin - ${protobuf-maven-plugin.version} - true - - - process-sources - - compile - test-compile - - - - - - ${project.basedir}/src/main/proto - ${project.basedir}/src/test/proto - - com.google.protobuf:protoc:${protoc.version}:exe:${os.detected.classifier} - - - - com.googlecode.maven-download-plugin - download-maven-plugin - ${download-plugin.version} - - - iab_proto_file - generate-sources - - wget - - - https://raw.githubusercontent.com/IABTechLab/openrtb-proto-v2/master/openrtb-core/src/main/protobuf/openrtb.proto - ${project.basedir}/src/main/proto - openrtb.proto - - - - xapi_proto_file - generate-sources - - wget - - - https://raw.githubusercontent.com/MagniteEngineering/xapi-proto/main/src/proto/com/magnite/openrtb/v2/openrtb-xapi.proto - ${project.basedir}/src/main/proto - openrtb-xapi.proto - - - - tld_names - generate-resources - - wget - - - https://publicsuffix.org/list/effective_tld_names.dat - ${project.build.outputDirectory} - effective_tld_names.dat - - - - - - org.jacoco - jacoco-maven-plugin - ${jacoco-plugin.version} - - - com/iab/openrtb/** - **/proto/** - **/model/** - org/prebid/server/spring/config/** - - - - - prepare-agent - - prepare-agent - - - - report - - report - - - - check - - check - - - - - BUNDLE - - - INSTRUCTION - COVEREDRATIO - 90% - - - - - - - - - - pl.project13.maven - git-commit-id-plugin - ${git-commmit-plugin.version} - - - get-the-git-infos - - revision - - - - - ${project.basedir}/.git - git - false - true - ${project.build.outputDirectory}/git-revision.json - - json - - - - org.springframework.boot - spring-boot-maven-plugin - - - - - - - - - - - - - - - - ${spring.boot.version} - - false - true - org.prebid.server.Application - JAR - - - - - repackage - - - - - - io.fabric8 - docker-maven-plugin - ${docker-maven-plugin.version} - - - build-containers - pre-integration-test - - build - - - - - - org.codehaus.gmavenplus - gmavenplus-plugin - - true - - - - - compileTests - - - - - - org.apache.maven.plugins - maven-failsafe-plugin - - - -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar" - - - target/allure-results - ${mockserver.version} - ${project.version} - 2 - false - - - - - - integration-test - verify - - - - **/*Spec.java - - - - - - - org.aspectj - aspectjweaver - ${aspectj.version} - - - - - io.qameta.allure - allure-maven - ${allure-maven.version} - - - org.apache.maven.plugins - maven-compiler-plugin - - 17 - 17 - - - - - - - - - org.apache.maven.plugins - maven-checkstyle-plugin - - - - checkstyle - - - - - - org.jacoco - jacoco-maven-plugin - - - - report - - - - - - - - - - - Container debugging - - - - org.apache.maven.plugins - maven-failsafe-plugin - - - true - - - - - - - - - Apple M silicon - - - Mac - aarch64 - - - - osx-x86_64 - - - - From 3f9e793081cb31251e6706d2cdf16750817f94aa Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Tue, 25 Jul 2023 14:48:28 +0700 Subject: [PATCH 52/82] changed jenkinsfile --- Jenkinsfile | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 97cd9138621..82b20dc158c 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -19,7 +19,7 @@ pipeline { options { disableConcurrentBuilds() buildDiscarder(logRotator(artifactNumToKeepStr: '3')) - copyArtifactPermission('deployment') + // copyArtifactPermission('deployment') } agent any stages { @@ -48,4 +48,13 @@ pipeline { } } } + post { + always { + script{ + if (env.BRANCH_NAME == 'master') { + archiveArtifacts artifacts: '**/target/prebid-server*.jar', onlyIfSuccessful: false + } + } + } + } } From 42adf902a6fff65f22650107bfd9e4df5e731233 Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Tue, 25 Jul 2023 15:56:32 +0700 Subject: [PATCH 53/82] changed jenkinsfile --- Jenkinsfile | 27 ++++++------------- .../resources/bidder-config/alkimi.yaml.dev | 19 +++++++++++++ 2 files changed, 27 insertions(+), 19 deletions(-) create mode 100644 src/main/resources/bidder-config/alkimi.yaml.dev diff --git a/Jenkinsfile b/Jenkinsfile index 82b20dc158c..f9aa8ec21e1 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -18,11 +18,16 @@ pipeline { } options { disableConcurrentBuilds() - buildDiscarder(logRotator(artifactNumToKeepStr: '3')) - // copyArtifactPermission('deployment') } agent any stages { + stage('Prepare build') { + steps { + script { + sh 'cp ./src/main/resources/bidder-config/alkimi.yaml.${MY_ENV} ./src/main/resources/bidder-config/alkimi.yaml' + } + } + } stage('Build') { steps { script { @@ -31,29 +36,13 @@ pipeline { } } } - // stage('Publish') { - // steps { - // script { - // sh "mvn deploy -Dmaven.test.skip=true -Drevision=${MY_VERSION}" - // } - // } - // } stage('Deploy to dev') { when { branch "master" } steps { git branch: 'master', url: "git@github.com:Alkimi-Exchange/alkimi-ansible.git", credentialsId: 'ssh-alkimi-ansible' - sh "ansible-playbook ./apps/dev/prebid-server.yml --extra-vars='artifactPath=${env.WORKSPACE}/target/prebid-server.jar'" - } - } - } - post { - always { - script{ - if (env.BRANCH_NAME == 'master') { - archiveArtifacts artifacts: '**/target/prebid-server*.jar', onlyIfSuccessful: false - } + sh "ansible-playbook ./apps/dev/prebid-server.yml --extra-vars='artifactPath=${env.WORKSPACE}/target/prebid-server.jar' configPath='${env.WORKSPACE}/config'" } } } diff --git a/src/main/resources/bidder-config/alkimi.yaml.dev b/src/main/resources/bidder-config/alkimi.yaml.dev new file mode 100644 index 00000000000..3467620df11 --- /dev/null +++ b/src/main/resources/bidder-config/alkimi.yaml.dev @@ -0,0 +1,19 @@ +adapters: + alkimi: + endpoint: https://exchange.alkimi-onboarding-dev.com/server/bid + meta-info: + maintainer-email: support@alkimi.org + app-media-types: + - banner + - video + site-media-types: + - banner + - video + supported-vendors: + vendor-id: 0 + usersync: + cookie-family-name: alkimi + redirect: + url: https://localhost:8000/getuid?{{redirect_url}} + support-cors: false + uid-macro: '$UID' From 0b984dcb2f8c176a58e052282f79133d40333d3b Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Tue, 25 Jul 2023 16:24:25 +0700 Subject: [PATCH 54/82] changed jenkinsfile --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index f9aa8ec21e1..ac1d7ee2b20 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -42,7 +42,7 @@ pipeline { } steps { git branch: 'master', url: "git@github.com:Alkimi-Exchange/alkimi-ansible.git", credentialsId: 'ssh-alkimi-ansible' - sh "ansible-playbook ./apps/dev/prebid-server.yml --extra-vars='artifactPath=${env.WORKSPACE}/target/prebid-server.jar' configPath='${env.WORKSPACE}/config'" + sh "ansible-playbook ./apps/dev/prebid-server.yml --extra-vars='artifactPath=${env.WORKSPACE}/target/prebid-server.jar configPath=${env.WORKSPACE}/config'" } } } From 34391e7ba59f4a1b4cc42a49af2c942523354b71 Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Tue, 25 Jul 2023 17:06:32 +0700 Subject: [PATCH 55/82] added config dir --- config/1001.json | 13 ++++++++ config/prebid-ita-banner-320-50.json | 18 +++++++++++ ...ebid-ita-display-interstitial-320-480.json | 8 +++++ config/prebid-ita-video-outstream.json | 15 +++++++++ config/prebid-server-config.yaml | 31 +++++++++++++++++++ config/prebid-server-settings.yaml | 15 +++++++++ 6 files changed, 100 insertions(+) create mode 100644 config/1001.json create mode 100644 config/prebid-ita-banner-320-50.json create mode 100644 config/prebid-ita-display-interstitial-320-480.json create mode 100644 config/prebid-ita-video-outstream.json create mode 100644 config/prebid-server-config.yaml create mode 100644 config/prebid-server-settings.yaml diff --git a/config/1001.json b/config/1001.json new file mode 100644 index 00000000000..48dd5e977ee --- /dev/null +++ b/config/1001.json @@ -0,0 +1,13 @@ +{ + "tmax": 100000, + "ext": { + "prebid": { + "targeting": { + "pricegranularity": "low" + } + } + }, + "user": { + "buyeruid": 954 + } +} diff --git a/config/prebid-ita-banner-320-50.json b/config/prebid-ita-banner-320-50.json new file mode 100644 index 00000000000..a32224ded48 --- /dev/null +++ b/config/prebid-ita-banner-320-50.json @@ -0,0 +1,18 @@ +{ + "id": "impId001", + "banner": { + "format": [ + { + "w": 320, + "h": 50 + } + ] + }, + "bidfloor": 0.01, + "ext": { + "admaru": { + "placementId": "some_placement_id" + } + }, + "tagid": "773" +} diff --git a/config/prebid-ita-display-interstitial-320-480.json b/config/prebid-ita-display-interstitial-320-480.json new file mode 100644 index 00000000000..3354b4c6deb --- /dev/null +++ b/config/prebid-ita-display-interstitial-320-480.json @@ -0,0 +1,8 @@ +{ + "tagid": "957", + "bidfloor": 0.01, + "ext": { + "admaru": { + } + } +} diff --git a/config/prebid-ita-video-outstream.json b/config/prebid-ita-video-outstream.json new file mode 100644 index 00000000000..30191e38ad9 --- /dev/null +++ b/config/prebid-ita-video-outstream.json @@ -0,0 +1,15 @@ +{ + "id": "impId002", + "video": { + "w": 300, + "h": 250, + "mimes": ["video/mp4"] + }, + "bidfloor": 0.01, + "ext": { + "admaru": { + "placementId": "some_placement_id" + } + }, + "tagid": "774" +} diff --git a/config/prebid-server-config.yaml b/config/prebid-server-config.yaml new file mode 100644 index 00000000000..7fe91fa0d60 --- /dev/null +++ b/config/prebid-server-config.yaml @@ -0,0 +1,31 @@ +status-response: "ok" +adapters: + admaru: + enabled: true +metrics: + prefix: prebid +cache: + scheme: http + host: localhost + path: /cache + query: uuid= +settings: + enforce-valid-account: false + generate-storedrequest-bidrequest-id: true + filesystem: + settings-filename: ./prebid-server-settings.yaml + stored-requests-dir: ./stored + stored-imps-dir: ./stored + stored-responses-dir: ./stored + categories-dir: +gdpr: + default-value: 1 + vendorlist: + v2: + cache-dir: /var/tmp/vendor2 +admin-endpoints: + logging-changelevel: + enabled: true + path: /logging/changelevel + on-application-port: true + protected: false diff --git a/config/prebid-server-settings.yaml b/config/prebid-server-settings.yaml new file mode 100644 index 00000000000..d015413875a --- /dev/null +++ b/config/prebid-server-settings.yaml @@ -0,0 +1,15 @@ +accounts: + - id: 1001 + status: active + auction: + price-granularity: low + privacy: + ccpa: + enabled: true + gdpr: + enabled: true + cookie-sync: + default-limit: 8 + max-limit: 15 + coop-sync: + default: true From c63eea116471799550eb8f1b69a6845c3e82ec02 Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Tue, 25 Jul 2023 17:22:00 +0700 Subject: [PATCH 56/82] changed jenkinsfile --- Jenkinsfile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index ac1d7ee2b20..41d8fb3221c 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -41,8 +41,10 @@ pipeline { branch "master" } steps { - git branch: 'master', url: "git@github.com:Alkimi-Exchange/alkimi-ansible.git", credentialsId: 'ssh-alkimi-ansible' - sh "ansible-playbook ./apps/dev/prebid-server.yml --extra-vars='artifactPath=${env.WORKSPACE}/target/prebid-server.jar configPath=${env.WORKSPACE}/config'" + dir('ansible') { + git branch: 'master', url: "git@github.com:Alkimi-Exchange/alkimi-ansible.git", credentialsId: 'ssh-alkimi-ansible' + } + sh "cd ./ansible && ansible-playbook ./apps/dev/prebid-server.yml --extra-vars='artifactPath=${env.WORKSPACE}/target/prebid-server.jar configPath=${env.WORKSPACE}/config'" } } } From 76c9786e4121b93196005a8c501f03ea2684a8d7 Mon Sep 17 00:00:00 2001 From: Aleksei Balalaev Date: Tue, 25 Jul 2023 19:06:14 +0700 Subject: [PATCH 57/82] fixed adapter name --- config/prebid-server-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/prebid-server-config.yaml b/config/prebid-server-config.yaml index 7fe91fa0d60..b4d1bab14bc 100644 --- a/config/prebid-server-config.yaml +++ b/config/prebid-server-config.yaml @@ -1,6 +1,6 @@ status-response: "ok" adapters: - admaru: + alkimi: enabled: true metrics: prefix: prebid From 61af21be3ef6774a034f3987f3864030c4a88d71 Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Tue, 25 Jul 2023 18:16:35 +0200 Subject: [PATCH 58/82] test jenkinsfile change --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 41d8fb3221c..17af6223b20 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -11,7 +11,7 @@ pipeline { ).trim() MY_VERSION = sh(returnStdout: true, script: '''#!/bin/bash - if [[ $BRANCH_NAME =~ "release-" ]]; then echo "${BRANCH_NAME}.${BUILD_ID}"; else echo "${BRANCH_NAME}.${BUILD_ID}-SNAPSHOT"; fi + if [[ $BRANCH_NAME =~ "release-" ]]; then echo "${BUILD_ID}.0.0"; else echo "${BUILD_ID}.0.0-SNAPSHOT"; fi ''' ).trim() DO_API_TOKEN = vault path: 'jenkins/digitalocean', key: 'ro_token' From 84a5005cc64abb429e284b93b2f636d3b9d16ad0 Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Tue, 25 Jul 2023 18:21:04 +0200 Subject: [PATCH 59/82] fix configs --- config/prebid-server-config.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/prebid-server-config.yaml b/config/prebid-server-config.yaml index b4d1bab14bc..bb86ce3728b 100644 --- a/config/prebid-server-config.yaml +++ b/config/prebid-server-config.yaml @@ -23,6 +23,8 @@ gdpr: vendorlist: v2: cache-dir: /var/tmp/vendor2 + v3: + cache-dir: /var/tmp/vendor3 admin-endpoints: logging-changelevel: enabled: true From ee0833eebd2be84f7facb7f8ee0154f112635399 Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Thu, 27 Jul 2023 09:52:50 +0200 Subject: [PATCH 60/82] update bidFloor --- .../java/org/prebid/server/bidder/alkimi/AlkimiBidder.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java index ab439c7bd01..141c504fec5 100644 --- a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java +++ b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java @@ -15,6 +15,7 @@ import org.prebid.server.bidder.model.BidderCall; import org.prebid.server.bidder.model.BidderError; import org.prebid.server.bidder.model.HttpRequest; +import org.prebid.server.bidder.model.Price; import org.prebid.server.bidder.model.Result; import org.prebid.server.exception.PreBidException; import org.prebid.server.json.DecodeException; @@ -30,6 +31,8 @@ import java.util.List; import java.util.Objects; +import static org.prebid.server.util.BidderUtil.isValidPrice; + public class AlkimiBidder implements Bidder { private final String endpointUrl; @@ -69,8 +72,10 @@ private Imp updateImp(Imp imp, ExtImpAlkimi extImpAlkimi) { final Banner updatedBanner = updateBanner(imp.getBanner(), position); final Video updatedVideo = updateVideo(imp.getVideo(), position); + final Price bidFloorPrice = Price.of(imp.getBidfloorcur(), imp.getBidfloor()); + return imp.toBuilder() - .bidfloor(extImpAlkimi.getBidFloor()) + .bidfloor(isValidPrice(bidFloorPrice) ? bidFloorPrice.getValue() : extImpAlkimi.getBidFloor()) .banner(updatedBanner) .video(updatedVideo) .ext(makeImpExt(imp, updatedBanner, updatedVideo, extImpAlkimi)) From 0103985a26296fd9a2100c30a888d606571f1f78 Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Thu, 27 Jul 2023 10:33:04 +0200 Subject: [PATCH 61/82] remove static import --- .../java/org/prebid/server/bidder/alkimi/AlkimiBidder.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java index 141c504fec5..205e8f9a1fd 100644 --- a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java +++ b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java @@ -31,8 +31,6 @@ import java.util.List; import java.util.Objects; -import static org.prebid.server.util.BidderUtil.isValidPrice; - public class AlkimiBidder implements Bidder { private final String endpointUrl; @@ -75,7 +73,7 @@ private Imp updateImp(Imp imp, ExtImpAlkimi extImpAlkimi) { final Price bidFloorPrice = Price.of(imp.getBidfloorcur(), imp.getBidfloor()); return imp.toBuilder() - .bidfloor(isValidPrice(bidFloorPrice) ? bidFloorPrice.getValue() : extImpAlkimi.getBidFloor()) + .bidfloor(BidderUtil.isValidPrice(bidFloorPrice) ? bidFloorPrice.getValue() : extImpAlkimi.getBidFloor()) .banner(updatedBanner) .video(updatedVideo) .ext(makeImpExt(imp, updatedBanner, updatedVideo, extImpAlkimi)) From f25f50c2c383972fa0a11873d90b722f55caab03 Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Thu, 27 Jul 2023 10:36:51 +0200 Subject: [PATCH 62/82] fix line length --- .../java/org/prebid/server/bidder/alkimi/AlkimiBidder.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java index 205e8f9a1fd..f7177c21b53 100644 --- a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java +++ b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java @@ -73,7 +73,9 @@ private Imp updateImp(Imp imp, ExtImpAlkimi extImpAlkimi) { final Price bidFloorPrice = Price.of(imp.getBidfloorcur(), imp.getBidfloor()); return imp.toBuilder() - .bidfloor(BidderUtil.isValidPrice(bidFloorPrice) ? bidFloorPrice.getValue() : extImpAlkimi.getBidFloor()) + .bidfloor(BidderUtil.isValidPrice(bidFloorPrice) + ? bidFloorPrice.getValue() + : extImpAlkimi.getBidFloor()) .banner(updatedBanner) .video(updatedVideo) .ext(makeImpExt(imp, updatedBanner, updatedVideo, extImpAlkimi)) From 4f7e4c4411ed9fdb23234842295f67eca8d8afe1 Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Thu, 27 Jul 2023 19:09:27 +0200 Subject: [PATCH 63/82] enable tests --- Jenkinsfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 17af6223b20..f84f12b2cef 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -32,7 +32,8 @@ pipeline { steps { script { sh "echo ${BRANCH_NAME} ${GIT_BRANCH} ${GIT_COMMIT} ${MY_VERSION} ${MY_ENV}" - sh "mvn clean package -Dmaven.test.skip=true -Drevision=${MY_VERSION}" +// sh "mvn clean package -Dmaven.test.skip=true -Drevision=${MY_VERSION}" + sh "mvn clean package -Drevision=${MY_VERSION}" } } } From d0ee3f1734d8298e9183acea51d7c6093c1b0bf9 Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Mon, 31 Jul 2023 10:43:48 +0200 Subject: [PATCH 64/82] remove required bidFloor --- Jenkinsfile | 4 ++-- src/main/resources/static/bidder-params/alkimi.json | 6 +----- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index f84f12b2cef..254fe45b58a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -32,8 +32,8 @@ pipeline { steps { script { sh "echo ${BRANCH_NAME} ${GIT_BRANCH} ${GIT_COMMIT} ${MY_VERSION} ${MY_ENV}" -// sh "mvn clean package -Dmaven.test.skip=true -Drevision=${MY_VERSION}" - sh "mvn clean package -Drevision=${MY_VERSION}" + sh "mvn clean package -Dmaven.test.skip=true -Drevision=${MY_VERSION}" +// sh "mvn clean package -Drevision=${MY_VERSION}" } } } diff --git a/src/main/resources/static/bidder-params/alkimi.json b/src/main/resources/static/bidder-params/alkimi.json index cb8dafcb298..804b7c912de 100644 --- a/src/main/resources/static/bidder-params/alkimi.json +++ b/src/main/resources/static/bidder-params/alkimi.json @@ -13,12 +13,8 @@ "type": "number", "description": "The minimum CPM price in USD", "minimum": 0 - }, - "pos": { - "type": "number", - "description": "Specify the position of the ad as a relative measure of visibility or prominence. Allowed values: Above the fold: `1`; Below the fold: `3`; Middle of the fold: `7`;" } }, - "required": ["token", "bidFloor"] + "required": ["token"] } From 02b265504b234210551b834325ec9c957540ce7c Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Mon, 31 Jul 2023 13:42:41 +0200 Subject: [PATCH 65/82] Update ExtImpAlkimi --- .../server/bidder/alkimi/AlkimiBidder.java | 39 +------------------ .../ext/request/alkimi/ExtImpAlkimi.java | 9 +---- 2 files changed, 4 insertions(+), 44 deletions(-) diff --git a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java index f7177c21b53..dd838fc44f2 100644 --- a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java +++ b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java @@ -66,54 +66,19 @@ private ExtImpAlkimi parseImpExt(Imp imp) { } private Imp updateImp(Imp imp, ExtImpAlkimi extImpAlkimi) { - final Integer position = extImpAlkimi.getPos(); - final Banner updatedBanner = updateBanner(imp.getBanner(), position); - final Video updatedVideo = updateVideo(imp.getVideo(), position); - final Price bidFloorPrice = Price.of(imp.getBidfloorcur(), imp.getBidfloor()); return imp.toBuilder() .bidfloor(BidderUtil.isValidPrice(bidFloorPrice) ? bidFloorPrice.getValue() : extImpAlkimi.getBidFloor()) - .banner(updatedBanner) - .video(updatedVideo) - .ext(makeImpExt(imp, updatedBanner, updatedVideo, extImpAlkimi)) - .build(); - } - - private Banner updateBanner(Banner banner, Integer position) { - if (banner == null || CollectionUtils.isEmpty(banner.getFormat())) { - return banner; - } - - final Format firstFormat = banner.getFormat().get(0); - return banner.toBuilder() - .w(firstFormat.getW()) - .h(firstFormat.getH()) - .pos(position) + .ext(makeImpExt(imp, extImpAlkimi)) .build(); } - private Video updateVideo(Video video, Integer position) { - return video != null ? video.toBuilder().pos(position).build() : null; - } - - private ObjectNode makeImpExt(Imp imp, Banner banner, Video video, ExtImpAlkimi extImpAlkimi) { + private ObjectNode makeImpExt(Imp imp, ExtImpAlkimi extImpAlkimi) { final ExtImpAlkimi.ExtImpAlkimiBuilder extBuilder = extImpAlkimi.toBuilder(); - if (banner != null) { - extBuilder.width(banner.getW()); - extBuilder.height(banner.getH()); - extBuilder.impMediaType(TYPE_BANNER); - } - - if (video != null) { - extBuilder.width(video.getW()); - extBuilder.height(video.getH()); - extBuilder.impMediaType(TYPE_VIDEO); - } - extBuilder.adUnitCode(imp.getId()); return mapper.mapper().valueToTree(ExtPrebid.of(null, extBuilder.build())); diff --git a/src/main/java/org/prebid/server/proto/openrtb/ext/request/alkimi/ExtImpAlkimi.java b/src/main/java/org/prebid/server/proto/openrtb/ext/request/alkimi/ExtImpAlkimi.java index ed5cb329df4..f1c903c37df 100644 --- a/src/main/java/org/prebid/server/proto/openrtb/ext/request/alkimi/ExtImpAlkimi.java +++ b/src/main/java/org/prebid/server/proto/openrtb/ext/request/alkimi/ExtImpAlkimi.java @@ -15,14 +15,9 @@ public class ExtImpAlkimi { @JsonProperty("bidFloor") BigDecimal bidFloor; - Integer pos; + Integer instl; - Integer width; - - Integer height; - - @JsonProperty("impMediaType") - String impMediaType; + Integer exp; @JsonProperty("adUnitCode") String adUnitCode; From 7a4529ab9033e206b9cfb704aac7525ec685783a Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Mon, 31 Jul 2023 13:48:10 +0200 Subject: [PATCH 66/82] unused imports --- .../java/org/prebid/server/bidder/alkimi/AlkimiBidder.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java index dd838fc44f2..cbdd71163bd 100644 --- a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java +++ b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java @@ -2,11 +2,8 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.node.ObjectNode; -import com.iab.openrtb.request.Banner; import com.iab.openrtb.request.BidRequest; -import com.iab.openrtb.request.Format; import com.iab.openrtb.request.Imp; -import com.iab.openrtb.request.Video; import com.iab.openrtb.response.BidResponse; import com.iab.openrtb.response.SeatBid; import org.apache.commons.collections4.CollectionUtils; From 608c0892fb3f746764fb775a7abc414f44bdafce Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Mon, 31 Jul 2023 20:03:40 +0200 Subject: [PATCH 67/82] fix tests --- .../bidder/alkimi/AlkimiBidderTest.java | 22 +++++++------------ .../alkimi/test-alkimi-bid-request.json | 5 ++--- 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java index d6d4f706c47..bc8163edc8d 100644 --- a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java @@ -93,9 +93,6 @@ public void makeHttpRequestsShouldUpdateImps() { private Banner expectedBanner() { return Banner.builder() - .pos(5) - .w(300) - .h(250) .format(Collections.singletonList(Format.builder() .w(300) .h(250) @@ -109,17 +106,14 @@ private ObjectNode expectedBannerExt() { ExtImpAlkimi.builder() .token(PUB_TOKEN) .bidFloor(BigDecimal.valueOf(0.2)) - .pos(5) - .width(300) - .height(250) - .impMediaType(TYPE_BANNER) + .instl(1) + .exp(30) .adUnitCode(DIV_BANNER_ID) .build())); } private Video expectedVideo() { return Video.builder() - .pos(7) .w(1024) .h(768) .mimes(List.of("video/mp4")) @@ -133,10 +127,8 @@ private ObjectNode expectedVideoExt() { ExtImpAlkimi.builder() .token(PUB_TOKEN) .bidFloor(BigDecimal.valueOf(0.3)) - .pos(7) - .width(1024) - .height(768) - .impMediaType(TYPE_VIDEO) + .instl(1) + .exp(30) .adUnitCode(DIV_VIDEO_ID) .build())); } @@ -216,7 +208,8 @@ private static Imp givenBannerImp(Function impCu ExtImpAlkimi.builder() .token(PUB_TOKEN) .bidFloor(BigDecimal.valueOf(0.2)) - .pos(5) + .instl(1) + .exp(30) .build()))) ).build(); } @@ -235,7 +228,8 @@ private static Imp givenVideoImp(Function impCus ExtImpAlkimi.builder() .token(PUB_TOKEN) .bidFloor(BigDecimal.valueOf(0.3)) - .pos(7) + .instl(1) + .exp(30) .build()))) ).build(); } diff --git a/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-request.json b/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-request.json index fd6e1e0e5e0..fb460f7b858 100644 --- a/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-request.json +++ b/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-request.json @@ -16,9 +16,8 @@ "bidder": { "token": "XXX", "bidFloor": 0.5, - "width": 640, - "height": 480, - "impMediaType": "Video", + "instl": 1, + "exp": 30, "adUnitCode": "imp_id" } } From 4293395ac02d7598ad157087fd740e1884b144c6 Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Mon, 31 Jul 2023 20:26:22 +0200 Subject: [PATCH 68/82] clear pom --- Jenkinsfile | 52 ------------------- config/1001.json | 13 ----- config/prebid-ita-banner-320-50.json | 18 ------- ...ebid-ita-display-interstitial-320-480.json | 8 --- config/prebid-ita-video-outstream.json | 15 ------ config/prebid-server-config.yaml | 33 ------------ config/prebid-server-settings.yaml | 15 ------ pom.xml | 31 ----------- 8 files changed, 185 deletions(-) delete mode 100644 Jenkinsfile delete mode 100644 config/1001.json delete mode 100644 config/prebid-ita-banner-320-50.json delete mode 100644 config/prebid-ita-display-interstitial-320-480.json delete mode 100644 config/prebid-ita-video-outstream.json delete mode 100644 config/prebid-server-config.yaml delete mode 100644 config/prebid-server-settings.yaml diff --git a/Jenkinsfile b/Jenkinsfile deleted file mode 100644 index 254fe45b58a..00000000000 --- a/Jenkinsfile +++ /dev/null @@ -1,52 +0,0 @@ -#!groovy - -pipeline { - environment { - JAVA_HOME = "/opt/java/jdk-17.0.2/" - CI = "false" - MY_ENV = sh(returnStdout: true, script: - '''#!/bin/bash - if [[ $BRANCH_NAME =~ "release-" ]]; then echo prod; else echo dev; fi - ''' - ).trim() - MY_VERSION = sh(returnStdout: true, script: - '''#!/bin/bash - if [[ $BRANCH_NAME =~ "release-" ]]; then echo "${BUILD_ID}.0.0"; else echo "${BUILD_ID}.0.0-SNAPSHOT"; fi - ''' - ).trim() - DO_API_TOKEN = vault path: 'jenkins/digitalocean', key: 'ro_token' - } - options { - disableConcurrentBuilds() - } - agent any - stages { - stage('Prepare build') { - steps { - script { - sh 'cp ./src/main/resources/bidder-config/alkimi.yaml.${MY_ENV} ./src/main/resources/bidder-config/alkimi.yaml' - } - } - } - stage('Build') { - steps { - script { - sh "echo ${BRANCH_NAME} ${GIT_BRANCH} ${GIT_COMMIT} ${MY_VERSION} ${MY_ENV}" - sh "mvn clean package -Dmaven.test.skip=true -Drevision=${MY_VERSION}" -// sh "mvn clean package -Drevision=${MY_VERSION}" - } - } - } - stage('Deploy to dev') { - when { - branch "master" - } - steps { - dir('ansible') { - git branch: 'master', url: "git@github.com:Alkimi-Exchange/alkimi-ansible.git", credentialsId: 'ssh-alkimi-ansible' - } - sh "cd ./ansible && ansible-playbook ./apps/dev/prebid-server.yml --extra-vars='artifactPath=${env.WORKSPACE}/target/prebid-server.jar configPath=${env.WORKSPACE}/config'" - } - } - } -} diff --git a/config/1001.json b/config/1001.json deleted file mode 100644 index 48dd5e977ee..00000000000 --- a/config/1001.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "tmax": 100000, - "ext": { - "prebid": { - "targeting": { - "pricegranularity": "low" - } - } - }, - "user": { - "buyeruid": 954 - } -} diff --git a/config/prebid-ita-banner-320-50.json b/config/prebid-ita-banner-320-50.json deleted file mode 100644 index a32224ded48..00000000000 --- a/config/prebid-ita-banner-320-50.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "id": "impId001", - "banner": { - "format": [ - { - "w": 320, - "h": 50 - } - ] - }, - "bidfloor": 0.01, - "ext": { - "admaru": { - "placementId": "some_placement_id" - } - }, - "tagid": "773" -} diff --git a/config/prebid-ita-display-interstitial-320-480.json b/config/prebid-ita-display-interstitial-320-480.json deleted file mode 100644 index 3354b4c6deb..00000000000 --- a/config/prebid-ita-display-interstitial-320-480.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "tagid": "957", - "bidfloor": 0.01, - "ext": { - "admaru": { - } - } -} diff --git a/config/prebid-ita-video-outstream.json b/config/prebid-ita-video-outstream.json deleted file mode 100644 index 30191e38ad9..00000000000 --- a/config/prebid-ita-video-outstream.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "id": "impId002", - "video": { - "w": 300, - "h": 250, - "mimes": ["video/mp4"] - }, - "bidfloor": 0.01, - "ext": { - "admaru": { - "placementId": "some_placement_id" - } - }, - "tagid": "774" -} diff --git a/config/prebid-server-config.yaml b/config/prebid-server-config.yaml deleted file mode 100644 index bb86ce3728b..00000000000 --- a/config/prebid-server-config.yaml +++ /dev/null @@ -1,33 +0,0 @@ -status-response: "ok" -adapters: - alkimi: - enabled: true -metrics: - prefix: prebid -cache: - scheme: http - host: localhost - path: /cache - query: uuid= -settings: - enforce-valid-account: false - generate-storedrequest-bidrequest-id: true - filesystem: - settings-filename: ./prebid-server-settings.yaml - stored-requests-dir: ./stored - stored-imps-dir: ./stored - stored-responses-dir: ./stored - categories-dir: -gdpr: - default-value: 1 - vendorlist: - v2: - cache-dir: /var/tmp/vendor2 - v3: - cache-dir: /var/tmp/vendor3 -admin-endpoints: - logging-changelevel: - enabled: true - path: /logging/changelevel - on-application-port: true - protected: false diff --git a/config/prebid-server-settings.yaml b/config/prebid-server-settings.yaml deleted file mode 100644 index d015413875a..00000000000 --- a/config/prebid-server-settings.yaml +++ /dev/null @@ -1,15 +0,0 @@ -accounts: - - id: 1001 - status: active - auction: - price-granularity: low - privacy: - ccpa: - enabled: true - gdpr: - enabled: true - cookie-sync: - default-limit: 8 - max-limit: 15 - coop-sync: - default: true diff --git a/pom.xml b/pom.xml index 4c4bdb89149..8ff92face95 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,6 @@ prebid-server - ${revision} prebid-server Prebid Server (Server-side Header Bidding) @@ -95,21 +94,8 @@ 1.6.2 3.0.0 0.6.1 - - org.prebid.server.Application - - - artifactory.alkimi-onboarding-dev.com - https://artifactory.alkimi-onboarding-dev.com/artifactory/libs-snapshot-local - - - artifactory.alkimi-onboarding-dev.com - https://artifactory.alkimi-onboarding-dev.com/artifactory/libs-release-local - - - @@ -831,27 +817,10 @@ org.springframework.boot spring-boot-maven-plugin - - - - - - - - - - - - - - - ${spring.boot.version} false true - org.prebid.server.Application - JAR From 3af0e199dc446e6c7a450deb04e5d17fbe030fbd Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Mon, 31 Jul 2023 20:31:46 +0200 Subject: [PATCH 69/82] add description for optional params --- .../resources/bidder-config/alkimi.yaml.dev | 19 ------------------- .../static/bidder-params/alkimi.json | 8 ++++++++ 2 files changed, 8 insertions(+), 19 deletions(-) delete mode 100644 src/main/resources/bidder-config/alkimi.yaml.dev diff --git a/src/main/resources/bidder-config/alkimi.yaml.dev b/src/main/resources/bidder-config/alkimi.yaml.dev deleted file mode 100644 index 3467620df11..00000000000 --- a/src/main/resources/bidder-config/alkimi.yaml.dev +++ /dev/null @@ -1,19 +0,0 @@ -adapters: - alkimi: - endpoint: https://exchange.alkimi-onboarding-dev.com/server/bid - meta-info: - maintainer-email: support@alkimi.org - app-media-types: - - banner - - video - site-media-types: - - banner - - video - supported-vendors: - vendor-id: 0 - usersync: - cookie-family-name: alkimi - redirect: - url: https://localhost:8000/getuid?{{redirect_url}} - support-cors: false - uid-macro: '$UID' diff --git a/src/main/resources/static/bidder-params/alkimi.json b/src/main/resources/static/bidder-params/alkimi.json index 804b7c912de..93e09022469 100644 --- a/src/main/resources/static/bidder-params/alkimi.json +++ b/src/main/resources/static/bidder-params/alkimi.json @@ -13,6 +13,14 @@ "type": "number", "description": "The minimum CPM price in USD", "minimum": 0 + }, + "instl": { + "type": "number", + "description": "Set to 1 if using interstitial (default: 0)" + }, + "exp": { + "type": "number", + "description": "Advisory as to the number of seconds that may elapse between the auction and the actual impression" } }, From 01ae4955621ab6e0147da2f9735d25aa4e5cdb0a Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Mon, 31 Jul 2023 22:16:38 +0200 Subject: [PATCH 70/82] fix test --- .../java/org/prebid/server/bidder/alkimi/AlkimiBidder.java | 2 ++ .../org/prebid/server/bidder/alkimi/AlkimiBidderTest.java | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java index cbdd71163bd..10f487e4f71 100644 --- a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java +++ b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java @@ -69,6 +69,8 @@ private Imp updateImp(Imp imp, ExtImpAlkimi extImpAlkimi) { .bidfloor(BidderUtil.isValidPrice(bidFloorPrice) ? bidFloorPrice.getValue() : extImpAlkimi.getBidFloor()) + .instl(extImpAlkimi.getInstl()) + .exp(extImpAlkimi.getExp()) .ext(makeImpExt(imp, extImpAlkimi)) .build(); } diff --git a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java index bc8163edc8d..666249997b4 100644 --- a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java @@ -76,12 +76,16 @@ public void makeHttpRequestsShouldUpdateImps() { .id(DIV_BANNER_ID) .bidfloor(BigDecimal.valueOf(0.2)) .banner(expectedBanner()) + .instl(1) + .exp(30) .ext(expectedBannerExt()) .build(), Imp.builder() .id(DIV_VIDEO_ID) .bidfloor(BigDecimal.valueOf(0.3)) .video(expectedVideo()) + .instl(1) + .exp(30) .ext(expectedVideoExt()) .build()) ).build(); From 93cb079a08fe0ea9b23f12ca29caeb80087c1884 Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Mon, 31 Jul 2023 22:32:42 +0200 Subject: [PATCH 71/82] fix test --- .../server/it/openrtb2/alkimi/test-alkimi-bid-request.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-request.json b/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-request.json index fb460f7b858..812912a1350 100644 --- a/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-request.json +++ b/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-request.json @@ -16,8 +16,6 @@ "bidder": { "token": "XXX", "bidFloor": 0.5, - "instl": 1, - "exp": 30, "adUnitCode": "imp_id" } } From 71736412b1ec479c39dd0754c096a68e25a3f8e7 Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Wed, 9 Aug 2023 20:51:26 +0200 Subject: [PATCH 72/82] add audio support --- src/main/resources/bidder-config/alkimi.yaml | 2 + .../bidder/alkimi/AlkimiBidderTest.java | 58 ++++++++++++++++++- 2 files changed, 58 insertions(+), 2 deletions(-) diff --git a/src/main/resources/bidder-config/alkimi.yaml b/src/main/resources/bidder-config/alkimi.yaml index d1727189204..431f7bb3da1 100644 --- a/src/main/resources/bidder-config/alkimi.yaml +++ b/src/main/resources/bidder-config/alkimi.yaml @@ -6,9 +6,11 @@ adapters: app-media-types: - banner - video + - audio site-media-types: - banner - video + - audio supported-vendors: vendor-id: 0 usersync: diff --git a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java index 666249997b4..cedfa9eefff 100644 --- a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java @@ -2,6 +2,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.node.ObjectNode; +import com.iab.openrtb.request.Audio; import com.iab.openrtb.request.Banner; import com.iab.openrtb.request.BidRequest; import com.iab.openrtb.request.Format; @@ -33,12 +34,14 @@ import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; import static org.prebid.server.proto.openrtb.ext.response.BidType.banner; import static org.prebid.server.proto.openrtb.ext.response.BidType.video; +import static org.prebid.server.proto.openrtb.ext.response.BidType.audio; public class AlkimiBidderTest extends VertxTest { private static final String ENDPOINT_URL = "https://exchange.alkimi-onboarding.com/server/bid"; private static final String DIV_BANNER_ID = "div_banner_1"; private static final String DIV_VIDEO_ID = "div_video_1"; + private static final String DIV_AUDIO_ID = "div_audio_1"; private static final String PUB_TOKEN = "testPubToken"; private static final String TYPE_BANNER = "Banner"; private static final String TYPE_VIDEO = "Video"; @@ -87,6 +90,14 @@ public void makeHttpRequestsShouldUpdateImps() { .instl(1) .exp(30) .ext(expectedVideoExt()) + .build(), + Imp.builder() + .id(DIV_AUDIO_ID) + .bidfloor(BigDecimal.valueOf(0.4)) + .audio(expectedAudio()) + .instl(1) + .exp(30) + .ext(expectedAudioExt()) .build()) ).build(); @@ -137,6 +148,24 @@ private ObjectNode expectedVideoExt() { .build())); } + private Audio expectedAudio() { + return Audio.builder() + .mimes(List.of("audio/mp4")) + .build(); + } + + private ObjectNode expectedAudioExt() { + return mapper.valueToTree(ExtPrebid.of( + null, + ExtImpAlkimi.builder() + .token(PUB_TOKEN) + .bidFloor(BigDecimal.valueOf(0.4)) + .instl(1) + .exp(30) + .adUnitCode(DIV_AUDIO_ID) + .build())); + } + @Test public void makeBidsShouldReturnErrorIfResponseBodyCouldNotBeParsed() { final BidderCall httpCall = givenHttpCall(null, "invalid"); @@ -179,6 +208,7 @@ public void makeBidsShouldReturnBidsForBannerAndVideoImps() throws JsonProcessin assertThat(result.getErrors()).isEmpty(); assertThat(result.getValue()).contains(BidderBid.of(givenBannerBid(identity()), banner, null)); assertThat(result.getValue()).contains(BidderBid.of(givenVideoBid(identity()), video, null)); + assertThat(result.getValue()).contains(BidderBid.of(givenAudioBid(identity()), audio, null)); } private static BidRequest givenBidRequest() { @@ -194,7 +224,7 @@ private static BidRequest givenBidRequest( Function impCustomizer ) { return bidRequestCustomizer.apply(BidRequest.builder() - .imp(List.of(givenBannerImp(impCustomizer), givenVideoImp(impCustomizer))) + .imp(List.of(givenBannerImp(impCustomizer), givenVideoImp(impCustomizer), givenAudioImp(impCustomizer))) ).build(); } @@ -238,6 +268,23 @@ private static Imp givenVideoImp(Function impCus ).build(); } + private static Imp givenAudioImp(Function impCustomizer) { + return impCustomizer.apply(Imp.builder() + .id(DIV_AUDIO_ID) + .audio(Audio.builder() + .mimes(List.of("audio/mp4")) + .build()) + .ext(mapper.valueToTree(ExtPrebid.of( + null, + ExtImpAlkimi.builder() + .token(PUB_TOKEN) + .bidFloor(BigDecimal.valueOf(0.4)) + .instl(1) + .exp(30) + .build()))) + ).build(); + } + private static BidResponse givenBidResponse() { return givenBidResponse(identity()); } @@ -253,7 +300,8 @@ private static BidResponse givenBidResponse( return bidResponseCustomizer.apply(BidResponse.builder() .seatbid(singletonList(SeatBid.builder().bid(List.of( givenBannerBid(bidCustomizer), - givenVideoBid(bidCustomizer)) + givenVideoBid(bidCustomizer), + givenAudioBid(bidCustomizer)) ).build())) ).build(); } @@ -270,6 +318,12 @@ private static Bid givenVideoBid(Function bidCus ).build(); } + private static Bid givenAudioBid(Function bidCustomizer) { + return bidCustomizer.apply(Bid.builder() + .impid(DIV_AUDIO_ID) + ).build(); + } + private static BidderCall givenHttpCall(BidRequest bidRequest, String body) { return BidderCall.succeededHttp( HttpRequest.builder().payload(bidRequest).build(), From 47eccb9cca1078460dd24491ad82c2bb6cb1e5a4 Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Wed, 9 Aug 2023 21:14:25 +0200 Subject: [PATCH 73/82] fix test --- .../java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java index cedfa9eefff..1ba4828ef55 100644 --- a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java @@ -268,7 +268,7 @@ private static Imp givenVideoImp(Function impCus ).build(); } - private static Imp givenAudioImp(Function impCustomizer) { + private static Imp givenAudioImp(Function impCustomizer) { return impCustomizer.apply(Imp.builder() .id(DIV_AUDIO_ID) .audio(Audio.builder() From c6958e278f81aa237fb8df55f9f9a30ed69a7ba4 Mon Sep 17 00:00:00 2001 From: Kalidas Date: Thu, 7 Sep 2023 13:49:28 +0100 Subject: [PATCH 74/82] Resolve Auction_PRICE macro issue --- .../server/bidder/alkimi/AlkimiBidder.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java index 10f487e4f71..9d729408634 100644 --- a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java +++ b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java @@ -4,9 +4,11 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import com.iab.openrtb.request.BidRequest; import com.iab.openrtb.request.Imp; +import com.iab.openrtb.response.Bid; import com.iab.openrtb.response.BidResponse; import com.iab.openrtb.response.SeatBid; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.prebid.server.bidder.Bidder; import org.prebid.server.bidder.model.BidderBid; import org.prebid.server.bidder.model.BidderCall; @@ -23,6 +25,7 @@ import org.prebid.server.util.BidderUtil; import org.prebid.server.util.HttpUtil; +import java.math.BigDecimal; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -35,6 +38,7 @@ public class AlkimiBidder implements Bidder { private static final String TYPE_BANNER = "Banner"; private static final String TYPE_VIDEO = "Video"; + private static final String PRICE_MACRO = "${AUCTION_PRICE}"; private static final TypeReference> ALKIMI_EXT_TYPE_REFERENCE = new TypeReference<>() { }; @@ -106,7 +110,7 @@ private static List bidsFromResponse(BidRequest bidRequest, BidRespon .map(SeatBid::getBid) .filter(Objects::nonNull) .flatMap(Collection::stream) - .map(bid -> BidderBid.of(bid, getBidType(bid.getImpid(), bidRequest.getImp()), bidResponse.getCur())) + .map(bid -> resolveBidderBid(bidResponse.getCur(), bidRequest.getImp(), bid)) .toList(); } @@ -127,4 +131,22 @@ private static BidType getBidType(String impId, List imps) { } return bidType; } + + private static Bid resolveMacros(Bid bid) { + final BigDecimal price = bid.getPrice(); + final String priceAsString = price != null ? price.toPlainString() : "0"; + + return bid.toBuilder() + .nurl(StringUtils.replace(bid.getNurl(), PRICE_MACRO, priceAsString)) + .adm(StringUtils.replace(bid.getAdm(), PRICE_MACRO, priceAsString)) + .build(); + } + + private static BidderBid resolveBidderBid(String currency, List imps, Bid bid) { + try { + return BidderBid.of(resolveMacros(bid), getBidType(bid.getImpid(), imps), currency); + } catch (PreBidException e) { + return null; + } + } } From 4132890dfe3262534af6730bd9a516a5f4050bf4 Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Mon, 11 Sep 2023 18:33:46 +0200 Subject: [PATCH 75/82] auction_price macro test --- .../bidder/alkimi/AlkimiBidderTest.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java index 2acb949bad8..784b8777198 100644 --- a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java @@ -31,6 +31,7 @@ import static java.util.function.Function.identity; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; +import static org.assertj.core.api.Assertions.tuple; import static org.prebid.server.proto.openrtb.ext.response.BidType.audio; import static org.prebid.server.proto.openrtb.ext.response.BidType.banner; import static org.prebid.server.proto.openrtb.ext.response.BidType.video; @@ -203,6 +204,24 @@ public void makeBidsShouldReturnBidsForBannerAndVideoImps() throws JsonProcessin assertThat(result.getValue()).contains(BidderBid.of(givenAudioBid(identity()), audio, null)); } + @Test + public void makeBidsShouldReturnBidWithResolvedMacros() throws JsonProcessingException { + final BidderCall httpCall = givenHttpCall(null, + mapper.writeValueAsString(givenBidResponse( + bidBuilder -> bidBuilder + .nurl("nurl:${AUCTION_PRICE}") + .adm("adm:${AUCTION_PRICE}") + .price(BigDecimal.TEN)))); + + final Result> result = target.makeBids(httpCall, null); + + assertThat(result.getErrors()).isEmpty(); + assertThat(result.getValue()) + .extracting(BidderBid::getBid) + .extracting(Bid::getNurl, Bid::getAdm) + .containsExactly(tuple("nurl:10", "adm:10")); + } + private static BidRequest givenBidRequest() { return givenBidRequest(identity()); } From a207720ada92522133ab10854f5c2d14c13719ba Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Mon, 11 Sep 2023 19:18:23 +0200 Subject: [PATCH 76/82] auction_price macro test: fix --- .../java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java index 784b8777198..2b275dbff93 100644 --- a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java @@ -206,7 +206,8 @@ public void makeBidsShouldReturnBidsForBannerAndVideoImps() throws JsonProcessin @Test public void makeBidsShouldReturnBidWithResolvedMacros() throws JsonProcessingException { - final BidderCall httpCall = givenHttpCall(null, + final BidderCall httpCall = givenHttpCall( + givenBidRequest(), mapper.writeValueAsString(givenBidResponse( bidBuilder -> bidBuilder .nurl("nurl:${AUCTION_PRICE}") From b162de8a507c6a2b01bdf13efa6ca76d4863bef6 Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Mon, 11 Sep 2023 19:34:54 +0200 Subject: [PATCH 77/82] auction_price macro test: fix --- .../java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java index 2b275dbff93..91223bcf14f 100644 --- a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java @@ -220,7 +220,7 @@ public void makeBidsShouldReturnBidWithResolvedMacros() throws JsonProcessingExc assertThat(result.getValue()) .extracting(BidderBid::getBid) .extracting(Bid::getNurl, Bid::getAdm) - .containsExactly(tuple("nurl:10", "adm:10")); + .containsExactly(tuple("nurl:10", "adm:10", "nurl:10", "adm:10", "nurl:10", "adm:10")); } private static BidRequest givenBidRequest() { From 789663a07df7035cbe48bf5b79a97acbc380e476 Mon Sep 17 00:00:00 2001 From: Aleksandr Bogdanov Date: Mon, 11 Sep 2023 19:45:42 +0200 Subject: [PATCH 78/82] auction_price macro test: fix --- .../org/prebid/server/bidder/alkimi/AlkimiBidderTest.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java index 91223bcf14f..fda2190b609 100644 --- a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java @@ -220,7 +220,10 @@ public void makeBidsShouldReturnBidWithResolvedMacros() throws JsonProcessingExc assertThat(result.getValue()) .extracting(BidderBid::getBid) .extracting(Bid::getNurl, Bid::getAdm) - .containsExactly(tuple("nurl:10", "adm:10", "nurl:10", "adm:10", "nurl:10", "adm:10")); + .containsExactly( + tuple("nurl:10", "adm:10"), + tuple("nurl:10", "adm:10"), + tuple("nurl:10", "adm:10")); } private static BidRequest givenBidRequest() { From 926ce2e280d9aa4069154621836fc3c6873772d9 Mon Sep 17 00:00:00 2001 From: Kalidas Date: Tue, 16 Jan 2024 10:22:58 +0000 Subject: [PATCH 79/82] Added user sync URK for alkimi bidder adapter --- src/main/resources/bidder-config/alkimi.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/resources/bidder-config/alkimi.yaml b/src/main/resources/bidder-config/alkimi.yaml index e899521f8ad..1a4173a4ed3 100644 --- a/src/main/resources/bidder-config/alkimi.yaml +++ b/src/main/resources/bidder-config/alkimi.yaml @@ -13,3 +13,9 @@ adapters: - audio supported-vendors: vendor-id: 0 + usersync: + cookie-family-name: alkimi + redirect: + url: https://user-sync.alkimi-onboarding.com/ssp-sync?gdpr={{gdpr}}&us_privacy={{us_privacy}}&redirect={{redirect_url}} + support-cors: false + uid-macro: '${UID}' From 718555378b42df7db4df915de951956c316ee92c Mon Sep 17 00:00:00 2001 From: Kalidas Date: Tue, 11 Feb 2025 16:33:49 +0000 Subject: [PATCH 80/82] Added support for Imp extention object --- .../java/org/prebid/server/bidder/alkimi/AlkimiBidder.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java index 03a05d1b1aa..f1a48242f63 100644 --- a/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java +++ b/src/main/java/org/prebid/server/bidder/alkimi/AlkimiBidder.java @@ -67,13 +67,16 @@ private ExtImpAlkimi parseImpExt(Imp imp) { private Imp updateImp(Imp imp, ExtImpAlkimi extImpAlkimi) { final Price bidFloorPrice = Price.of(imp.getBidfloorcur(), imp.getBidfloor()); + final ObjectNode newExt = imp.getExt().deepCopy(); + newExt.replace("bidder", makeImpExt(imp, extImpAlkimi)); + return imp.toBuilder() .bidfloor(BidderUtil.isValidPrice(bidFloorPrice) ? bidFloorPrice.getValue() : extImpAlkimi.getBidFloor()) .instl(extImpAlkimi.getInstl()) .exp(extImpAlkimi.getExp()) - .ext(makeImpExt(imp, extImpAlkimi)) + .ext(newExt) .build(); } @@ -82,7 +85,7 @@ private ObjectNode makeImpExt(Imp imp, ExtImpAlkimi extImpAlkimi) { extBuilder.adUnitCode(imp.getId()); - return mapper.mapper().valueToTree(ExtPrebid.of(null, extBuilder.build())); + return mapper.mapper().valueToTree(extBuilder.build()); } @Override From 2468f4cdd6b77a5c19f960769893e4c6e68c4795 Mon Sep 17 00:00:00 2001 From: Kalidas Date: Wed, 12 Feb 2025 17:41:07 +0000 Subject: [PATCH 81/82] Updated the test for adding token id --- .../server/it/openrtb2/alkimi/test-alkimi-bid-request.json | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-request.json b/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-request.json index 812912a1350..f3dc7bc3eda 100644 --- a/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-request.json +++ b/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-request.json @@ -13,6 +13,7 @@ }, "bidfloor": 0.5, "ext": { + "tid": "${json-unit.any-string}", "bidder": { "token": "XXX", "bidFloor": 0.5, From f8290544e475472b20d411121bdfe6fa2401ab64 Mon Sep 17 00:00:00 2001 From: Kalidas Date: Wed, 26 Feb 2025 19:02:20 +0000 Subject: [PATCH 82/82] Added the unit test cases --- .../server/bidder/alkimi/AlkimiBidderTest.java | 15 +++++++++------ .../openrtb2/alkimi/test-alkimi-bid-request.json | 1 + .../alkimi/test-auction-alkimi-request.json | 1 + 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java index 26f40393f31..b794156db3f 100644 --- a/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/alkimi/AlkimiBidderTest.java @@ -25,6 +25,7 @@ import java.math.BigDecimal; import java.util.Collections; import java.util.List; +import java.util.Map; import java.util.function.Function; import static java.util.Collections.singletonList; @@ -109,9 +110,10 @@ private Banner expectedBanner() { } private ObjectNode expectedBannerExt() { - return mapper.valueToTree(ExtPrebid.of( - null, - ExtImpAlkimi.builder() + return mapper.valueToTree(Map.of( + "tid", "12345", + "gpid", "300x250", + "bidder", ExtImpAlkimi.builder() .token(PUB_TOKEN) .bidFloor(BigDecimal.valueOf(0.2)) .instl(1) @@ -252,9 +254,10 @@ private static Imp givenBannerImp(Function impCu .h(250) .build()) ).build()) - .ext(mapper.valueToTree(ExtPrebid.of( - null, - ExtImpAlkimi.builder() + .ext(mapper.valueToTree(Map.of( + "tid", "12345", + "gpid", "300x250", + "bidder", ExtImpAlkimi.builder() .token(PUB_TOKEN) .bidFloor(BigDecimal.valueOf(0.2)) .instl(1) diff --git a/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-request.json b/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-request.json index f3dc7bc3eda..90c8e1f416c 100644 --- a/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-request.json +++ b/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-alkimi-bid-request.json @@ -14,6 +14,7 @@ "bidfloor": 0.5, "ext": { "tid": "${json-unit.any-string}", + "gpid": "640x480", "bidder": { "token": "XXX", "bidFloor": 0.5, diff --git a/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-auction-alkimi-request.json b/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-auction-alkimi-request.json index 01f1964b9aa..b0bfd234de2 100644 --- a/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-auction-alkimi-request.json +++ b/src/test/resources/org/prebid/server/it/openrtb2/alkimi/test-auction-alkimi-request.json @@ -11,6 +11,7 @@ "h": 480 }, "ext": { + "gpid": "640x480", "alkimi": { "bidFloor": 0.5, "token": "XXX"