From 932606fb4f1df582a30018777207742fa5147325 Mon Sep 17 00:00:00 2001 From: Xavier FACQ Date: Wed, 18 Oct 2023 17:07:10 +0200 Subject: [PATCH] Use List of ReleaseType as parameter --- .../v3/routes/stats/DownloadStatsResource.kt | 20 +++++++++---------- .../net/adoptium/api/v3/models/ReleaseType.kt | 3 +-- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/adoptium-frontend-parent/adoptium-api-v3-frontend/src/main/kotlin/net/adoptium/api/v3/routes/stats/DownloadStatsResource.kt b/adoptium-frontend-parent/adoptium-api-v3-frontend/src/main/kotlin/net/adoptium/api/v3/routes/stats/DownloadStatsResource.kt index 178758412..171036201 100644 --- a/adoptium-frontend-parent/adoptium-api-v3-frontend/src/main/kotlin/net/adoptium/api/v3/routes/stats/DownloadStatsResource.kt +++ b/adoptium-frontend-parent/adoptium-api-v3-frontend/src/main/kotlin/net/adoptium/api/v3/routes/stats/DownloadStatsResource.kt @@ -68,14 +68,13 @@ class DownloadStatsResource { @Parameter(name = "feature_version", description = "Feature version (i.e 8, 9, 10...)", required = true) @PathParam("feature_version") featureVersion: Int, - @Parameter(name = "release_type", description = "Release type (i.e all, ga, ea)", required = false) - @PathParam("release_type") - releaseType: ReleaseType = ReleaseType.ga + @Parameter(name = "release_types", description = "List of release types to include in computation (i.e &release_types=ga,ea)", required = false) + @QueryParam("release_types") releaseTypes: List = listOf(ReleaseType.ga) ): Map { val release = apiDataStore.getAdoptRepos().getFeatureRelease(featureVersion) ?: throw BadRequestException("Unable to find version $featureVersion") - return getAdoptReleases(release, releaseType, null) + return getAdoptReleases(release, releaseTypes, null) .map { grouped -> Pair( grouped.release_name, @@ -99,14 +98,13 @@ class DownloadStatsResource { @Parameter(name = "release_name", description = "Release Name i.e jdk-11.0.4+11", required = true) @PathParam("release_name") releaseName: String, - @Parameter(name = "release_type", description = "Release type (i.e all, ga, ea)", required = false) - @PathParam("release_type") - releaseType: ReleaseType = ReleaseType.ga + @Parameter(name = "release_types", description = "List of release types to include in computation (i.e &release_types=ga,ea)", required = false) + @QueryParam("release_types") releaseTypes: List = listOf(ReleaseType.ga) ): Map { val release = apiDataStore.getAdoptRepos().getFeatureRelease(featureVersion) ?: throw BadRequestException("Unable to find version $featureVersion") - return getAdoptReleases(release, releaseType, releaseName) + return getAdoptReleases(release, releaseTypes, releaseName) .flatMap { it.binaries.asSequence() } .flatMap { val archive = Pair(it.`package`.name, it.download_count) @@ -119,13 +117,13 @@ class DownloadStatsResource { .toMap() } - private fun getAdoptReleases(release: FeatureRelease, releaseType: ReleaseType, releaseName: String?): Sequence { + private fun getAdoptReleases(release: FeatureRelease, releaseTypes: List, releaseName: String?): Sequence { var releases = release .releases .getReleases() - if(releaseType != ReleaseType.all) { - releases = releases.filter { it.release_type == releaseType } + if(releaseTypes.isNotEmpty()) { + releases = releases.filter { releaseTypes.contains(it.release_type) } } if(releaseName != null) { releases = releases.filter { it.release_name == releaseName } diff --git a/adoptium-models-parent/adoptium-api-v3-models/src/main/kotlin/net/adoptium/api/v3/models/ReleaseType.kt b/adoptium-models-parent/adoptium-api-v3-models/src/main/kotlin/net/adoptium/api/v3/models/ReleaseType.kt index 7e5e3883d..3f7825dce 100644 --- a/adoptium-models-parent/adoptium-api-v3-models/src/main/kotlin/net/adoptium/api/v3/models/ReleaseType.kt +++ b/adoptium-models-parent/adoptium-api-v3-models/src/main/kotlin/net/adoptium/api/v3/models/ReleaseType.kt @@ -3,9 +3,8 @@ package net.adoptium.api.v3.models import org.eclipse.microprofile.openapi.annotations.enums.SchemaType import org.eclipse.microprofile.openapi.annotations.media.Schema -@Schema(type = SchemaType.STRING, defaultValue = "ga", enumeration = ["all", "ga", "ea"]) +@Schema(type = SchemaType.STRING, defaultValue = "ga", enumeration = ["ga", "ea"]) enum class ReleaseType { - all, ga, ea; }