override fun createSearchPackagesResponse()

in nuget-feed/src/jetbrains/buildServer/nuget/feed/server/json/JsonPackageAdapterImpl.kt [47:91]


    override fun createSearchPackagesResponse(entries: List<NuGetIndexEntry>, take: Int, skip: Int?): JsonSearchResponse {
        val results = entries.groupBy { it.packageInfo.id }
        val totalHits = results.size
        val data = arrayListOf<JsonPackage>()
        var keys = results.keys.asSequence()
        skip?.let {
            keys = keys.drop(it)
        }

        keys.take(take).forEach { packageId ->
            results[packageId]?.let { packages ->
                val entry = packages.last()
                val versions = packages.map {
                    val version = VersionUtility.normalizeVersion(it.version)
                    JsonPackageVersion(
                            context.getRegistrationUrl(packageId.toLowerCase(), version),
                            version,
                            0
                    )
                }
                val version = VersionUtility.normalizeVersion(entry.version)
                data.add(JsonPackage(
                        context.getRegistrationUrl(packageId.toLowerCase(), version),
                        "Package",
                        packageId,
                        version,
                        versions,
                        entry.getValue(NuGetPackageAttributes.DESCRIPTION),
                        entry.getValue(NuGetPackageAttributes.AUTHORS),
                        entry.getValue(NuGetPackageAttributes.ICON_URL),
                        entry.getValue(NuGetPackageAttributes.LICENSE_URL),
                        null,
                        entry.getValue(NuGetPackageAttributes.PROJECT_URL),
                        context.getRegistrations(packageId.toLowerCase()),
                        entry.getValue(NuGetPackageAttributes.SUMMARY),
                        entry.getValue(NuGetPackageAttributes.TAGS),
                        entry.getValue(NuGetPackageAttributes.TITLE),
                        null,
                        null
                ))
            }
        }

        return JsonSearchResponse(totalHits, data)
    }