From 38e6047fa7a11c84fa4b1701feb6b77ce180d135 Mon Sep 17 00:00:00 2001 From: John Oliver <1615532+johnoliver@users.noreply.github.com> Date: Wed, 1 Apr 2020 11:41:35 +0000 Subject: [PATCH] Add v1 reject frontend --- .../main/kotlin/net/adoptopenjdk/api/v3/V3.kt | 5 ++- .../api/v3/routes/AssetsResource.kt | 2 +- .../api/v3/routes/BinaryResource.kt | 2 +- .../net/adoptopenjdk/api/v3/routes/V1Route.kt | 36 +++++++++++++++++++ .../api/v3/routes/VersionResource.kt | 2 +- .../routes/info/AvailableReleasesResource.kt | 2 +- .../api/v3/routes/info/PlatformsResource.kt | 2 +- .../api/v3/routes/info/ReleaseListResource.kt | 2 +- .../api/v3/routes/info/VariantsResource.kt | 2 +- .../v3/routes/stats/DownloadStatsResource.kt | 2 +- .../net/adoptopenjdk/api/V1RouteTest.kt | 25 +++++++++++++ 11 files changed, 73 insertions(+), 9 deletions(-) create mode 100644 adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/V1Route.kt create mode 100644 adoptopenjdk-api-v3-frontend/src/test/kotlin/net/adoptopenjdk/api/V1RouteTest.kt diff --git a/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/V3.kt b/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/V3.kt index 082460c2..da616382 100644 --- a/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/V3.kt +++ b/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/V3.kt @@ -3,6 +3,7 @@ package net.adoptopenjdk.api.v3 import net.adoptopenjdk.api.v3.dataSources.APIDataStore import net.adoptopenjdk.api.v3.routes.AssetsResource import net.adoptopenjdk.api.v3.routes.BinaryResource +import net.adoptopenjdk.api.v3.routes.V1Route import net.adoptopenjdk.api.v3.routes.VersionResource import net.adoptopenjdk.api.v3.routes.info.AvailableReleasesResource import net.adoptopenjdk.api.v3.routes.info.PlatformsResource @@ -30,7 +31,7 @@ const val DESCRIPTION = "
  • NOTICE: AdoptOpenJDK API v1 Has no Server(url = "https://staging-api.adoptopenjdk.net") ], info = Info(title = "v3", version = "3.0.0", description = DESCRIPTION)) -@ApplicationPath("/v3") +@ApplicationPath("/") class V3 : Application() { private val resourceClasses: Set> @@ -47,6 +48,7 @@ class V3 : Application() { APIDataStore.getAdoptRepos() resourceClasses = setOf( + V1Route::class.java, AssetsResource::class.java, BinaryResource::class.java, AvailableReleasesResource::class.java, @@ -65,3 +67,4 @@ class V3 : Application() { return resourceClasses } } + diff --git a/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/AssetsResource.kt b/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/AssetsResource.kt index b46965ca..0d179557 100644 --- a/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/AssetsResource.kt +++ b/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/AssetsResource.kt @@ -36,7 +36,7 @@ import kotlin.math.min @Tag(name = "Assets") -@Path("/assets/") +@Path("/v3/assets/") @Produces(MediaType.APPLICATION_JSON) class AssetsResource { diff --git a/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/BinaryResource.kt b/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/BinaryResource.kt index defe5e11..9b1b3925 100644 --- a/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/BinaryResource.kt +++ b/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/BinaryResource.kt @@ -34,7 +34,7 @@ import javax.ws.rs.core.Response @Tag(name = "Binary") -@Path("/binary/") +@Path("/v3/binary/") @Produces(MediaType.APPLICATION_JSON) class BinaryResource { diff --git a/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/V1Route.kt b/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/V1Route.kt new file mode 100644 index 00000000..d6604c92 --- /dev/null +++ b/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/V1Route.kt @@ -0,0 +1,36 @@ +package net.adoptopenjdk.api.v3.routes + +import org.eclipse.microprofile.openapi.annotations.Operation +import org.eclipse.microprofile.openapi.annotations.media.Schema +import javax.ws.rs.GET +import javax.ws.rs.Path +import javax.ws.rs.Produces +import javax.ws.rs.core.MediaType +import javax.ws.rs.core.Response + +@Path("/v1/") +@Schema(hidden = true) +@Produces(MediaType.TEXT_PLAIN) +class V1Route { + + //Cant find a way to match nothing and something in the same request, so need 2 + @GET + @Schema(hidden = true) + @Path("/{ignore: .*}") + @Operation(hidden = true) + fun get(): Response = reject() + + @GET + @Schema(hidden = true) + @Path("/") + @Operation(hidden = true) + fun getRoot(): Response = reject() + + + private fun reject(): Response { + return Response + .status(Response.Status.GONE) + .entity("REMOVED: V1 has now been removed, please see https://api.adoptopenjdk.net for the latest version") + .build() + } +} \ No newline at end of file diff --git a/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/VersionResource.kt b/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/VersionResource.kt index d0cc4c09..0f909b8f 100644 --- a/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/VersionResource.kt +++ b/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/VersionResource.kt @@ -16,7 +16,7 @@ import javax.ws.rs.Produces import javax.ws.rs.core.MediaType @Tag(name = "Version") -@Path("/version/") +@Path("/v3/version/") @Produces(MediaType.APPLICATION_JSON) class VersionResource { diff --git a/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/info/AvailableReleasesResource.kt b/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/info/AvailableReleasesResource.kt index dede345a..aa3c5a5f 100644 --- a/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/info/AvailableReleasesResource.kt +++ b/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/info/AvailableReleasesResource.kt @@ -10,7 +10,7 @@ import javax.ws.rs.Produces import javax.ws.rs.core.MediaType @Tag(name = "Release Info") -@Path("/info/") +@Path("/v3/info/") @Produces(MediaType.APPLICATION_JSON) class AvailableReleasesResource { diff --git a/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/info/PlatformsResource.kt b/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/info/PlatformsResource.kt index aafe4859..df3a4135 100644 --- a/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/info/PlatformsResource.kt +++ b/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/info/PlatformsResource.kt @@ -10,7 +10,7 @@ import javax.ws.rs.Produces import javax.ws.rs.core.MediaType @Tag(name = "Release Info") -@Path("/info/") +@Path("/v3/info/") @Produces(MediaType.APPLICATION_JSON) class PlatformsResource { diff --git a/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/info/ReleaseListResource.kt b/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/info/ReleaseListResource.kt index 87f28dfd..5b5244e4 100644 --- a/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/info/ReleaseListResource.kt +++ b/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/info/ReleaseListResource.kt @@ -22,7 +22,7 @@ import javax.ws.rs.Produces import javax.ws.rs.core.MediaType @Tag(name = "Release Info") -@Path("/info") +@Path("/v3/info") @Produces(MediaType.APPLICATION_JSON) class ReleaseListResource { diff --git a/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/info/VariantsResource.kt b/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/info/VariantsResource.kt index bd81a738..dd4c6009 100644 --- a/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/info/VariantsResource.kt +++ b/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/info/VariantsResource.kt @@ -10,7 +10,7 @@ import javax.ws.rs.Produces import javax.ws.rs.core.MediaType @Tag(name = "Release Info") -@Path("/info") +@Path("/v3/info") @Produces(MediaType.APPLICATION_JSON) class VariantsResource { diff --git a/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/stats/DownloadStatsResource.kt b/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/stats/DownloadStatsResource.kt index 4e7fedd4..217d3da9 100644 --- a/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/stats/DownloadStatsResource.kt +++ b/adoptopenjdk-api-v3-frontend/src/main/kotlin/net/adoptopenjdk/api/v3/routes/stats/DownloadStatsResource.kt @@ -26,7 +26,7 @@ import javax.ws.rs.core.MediaType import javax.ws.rs.core.Response -@Path("/stats/downloads") +@Path("/v3/stats/downloads") @Produces(MediaType.APPLICATION_JSON) @Schema(hidden = true) class DownloadStatsResource { diff --git a/adoptopenjdk-api-v3-frontend/src/test/kotlin/net/adoptopenjdk/api/V1RouteTest.kt b/adoptopenjdk-api-v3-frontend/src/test/kotlin/net/adoptopenjdk/api/V1RouteTest.kt new file mode 100644 index 00000000..2f04db82 --- /dev/null +++ b/adoptopenjdk-api-v3-frontend/src/test/kotlin/net/adoptopenjdk/api/V1RouteTest.kt @@ -0,0 +1,25 @@ +package net.adoptopenjdk.api + +import io.quarkus.test.junit.QuarkusTest +import io.restassured.RestAssured +import org.junit.jupiter.api.Test +import javax.ws.rs.core.Response + +@QuarkusTest +class V1RouteTest : BaseTest() { + @Test + fun v1ReturnsGone() { + listOf("/v1", + "/v1/", + "/v1/foo", + "/v1/foo/bar") + .forEach({ route -> + RestAssured.given() + .`when`() + .get(route) + .then() + .statusCode(Response.Status.GONE.statusCode) + }) + } + +} \ No newline at end of file