diff --git a/src/main/java/org/prebid/server/spring/config/server/application/ApplicationServerConfiguration.java b/src/main/java/org/prebid/server/spring/config/server/application/ApplicationServerConfiguration.java index a6b56622c42..b16d1397cab 100644 --- a/src/main/java/org/prebid/server/spring/config/server/application/ApplicationServerConfiguration.java +++ b/src/main/java/org/prebid/server/spring/config/server/application/ApplicationServerConfiguration.java @@ -39,9 +39,9 @@ import org.prebid.server.handler.NoCacheHandler; import org.prebid.server.handler.NotificationEventHandler; import org.prebid.server.handler.OptoutHandler; +import org.prebid.server.handler.PostVtrackHandler; import org.prebid.server.handler.SetuidHandler; import org.prebid.server.handler.StatusHandler; -import org.prebid.server.handler.PostVtrackHandler; import org.prebid.server.handler.info.BidderDetailsHandler; import org.prebid.server.handler.info.BiddersHandler; import org.prebid.server.handler.info.filters.BaseOnlyBidderInfoFilterStrategy; @@ -56,6 +56,7 @@ import org.prebid.server.json.JacksonMapper; import org.prebid.server.log.HttpInteractionLogger; import org.prebid.server.metric.Metrics; +import org.prebid.server.model.Endpoint; import org.prebid.server.optout.GoogleRecaptchaVerifier; import org.prebid.server.privacy.HostVendorTcfDefinerService; import org.prebid.server.settings.ApplicationSettings; @@ -64,8 +65,10 @@ import org.prebid.server.validation.BidderParamValidator; import org.prebid.server.version.PrebidVersionProvider; import org.prebid.server.vertx.verticles.VerticleDefinition; +import org.prebid.server.vertx.verticles.server.HttpEndpoint; import org.prebid.server.vertx.verticles.server.ServerVerticle; import org.prebid.server.vertx.verticles.server.application.ApplicationResource; +import org.prebid.server.vertx.verticles.server.application.DeprecatedResource; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -271,6 +274,7 @@ AmpHandler openrtbAmpHandler( } @Bean + @ConditionalOnProperty(value = "video.enable-deprecated-endpoint", havingValue = "true") VideoHandler openrtbVideoHandler( VideoRequestFactory videoRequestFactory, VideoResponseFactory videoResponseFactory, @@ -297,6 +301,15 @@ VideoHandler openrtbVideoHandler( mapper); } + @Bean + @ConditionalOnProperty(value = "video.enable-deprecated-endpoint", havingValue = "false", matchIfMissing = true) + ApplicationResource deprecatedOpenrtbVideoHandler() { + return new DeprecatedResource( + "The video endpoint is deprecated and will be removed in 5.0." + + " You may re-enable it via [video.enable-deprecated-endpoint]", + HttpEndpoint.of(HttpMethod.POST, Endpoint.openrtb2_video.value())); + } + @Bean StatusHandler statusHandler(List healthCheckers, JacksonMapper mapper) { healthCheckers.stream() diff --git a/src/main/java/org/prebid/server/vertx/verticles/server/application/DeprecatedResource.java b/src/main/java/org/prebid/server/vertx/verticles/server/application/DeprecatedResource.java new file mode 100644 index 00000000000..f87c53c9944 --- /dev/null +++ b/src/main/java/org/prebid/server/vertx/verticles/server/application/DeprecatedResource.java @@ -0,0 +1,33 @@ +package org.prebid.server.vertx.verticles.server.application; + +import io.netty.handler.codec.http.HttpResponseStatus; +import io.vertx.ext.web.RoutingContext; +import org.apache.commons.lang3.StringUtils; +import org.prebid.server.vertx.verticles.server.HttpEndpoint; + +import java.util.Arrays; +import java.util.List; + +public class DeprecatedResource implements ApplicationResource { + + private final String message; + + private final List endpoints; + + public DeprecatedResource(String message, HttpEndpoint... endpoints) { + this.message = message; + this.endpoints = Arrays.asList(endpoints); + } + + @Override + public List endpoints() { + return endpoints; + } + + @Override + public void handle(RoutingContext event) { + event.response() + .setStatusCode(HttpResponseStatus.GONE.code()) + .end(StringUtils.defaultString(message)); + } +} diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 9494abfeb5c..86526b803b2 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -131,6 +131,7 @@ auction: category-mapping-enabled: false strict-app-site-dooh: true video: + enable-deprecated-endpoint: false stored-request-required: false stored-requests-timeout-ms: 90 event: 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 1569de649f5..3c006fb21f6 100644 --- a/src/test/resources/org/prebid/server/it/test-application.properties +++ b/src/test/resources/org/prebid/server/it/test-application.properties @@ -710,6 +710,7 @@ http-client.circuit-breaker.opening-interval-ms=1000 http-client.circuit-breaker.closing-interval-ms=10000 auction.tmax-upstream-response-time=0 auction.category-mapping-enabled=true +video.enable-deprecated-endpoint=true currency-converter.external-rates.enabled=true currency-converter.external-rates.url=http://localhost:8090/currency-rates amp.custom-targeting=rubicon