in http/client/src/commonMain/kotlin/org/jetbrains/packagesearch/api/v3/http/PackageSearchApiClient.kt [414:438]
public suspend fun searchProjects(
request: SearchProjectRequest,
requestBuilder: (HttpRequestBuilder.() -> Unit)?,
): List<ApiProject> {
val apiProjectsCache = apiProjectCacheCollection.await()
apiProjectsCache.find(selector = SearchCacheEntry::key.name, value = request)
.firstOrNull()?.also { if (!it.isExpired(cacheDuration)) return it.value }
return defaultRequest<_, List<ApiProject>>(
method = HttpMethod.Post,
url = endpoints.searchPackages,
body = request,
requestBuilder = requestBuilder,
).also {
apiProjectsCache.updateWhere(
fieldSelector = ApiProjectCacheEntry::key.name,
fieldValue = request,
upsert = true,
update = ApiProjectCacheEntry(request, it)
)
}
}