diff --git a/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/configuration/internal/AlgoliaAgent.kt b/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/configuration/internal/AlgoliaAgent.kt index 744a7e5048d..0566da4c456 100644 --- a/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/configuration/internal/AlgoliaAgent.kt +++ b/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/configuration/internal/AlgoliaAgent.kt @@ -10,21 +10,13 @@ internal class AlgoliaAgent(clientVersion: String) { AgentSegment("Algolia for Kotlin", clientVersion), ) - fun add(segment: AgentSegment): Boolean { - return segments.add(segment) - } + fun add(segment: AgentSegment): Boolean = segments.add(segment) - fun add(segments: List): Boolean { - return this.segments.addAll(segments) - } + fun add(segments: List): Boolean = this.segments.addAll(segments) - fun remove(segment: AgentSegment): Boolean { - return segments.remove(segment) - } + fun remove(segment: AgentSegment): Boolean = segments.remove(segment) - override fun toString(): String { - return segments.joinToString("; ") { it.formatted() } - } + override fun toString(): String = segments.joinToString("; ") { it.formatted() } private fun AgentSegment.formatted(): String = buildString { append(value) diff --git a/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/configuration/internal/HttpClient.kt b/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/configuration/internal/HttpClient.kt index 9ceea491185..caf65796bd2 100644 --- a/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/configuration/internal/HttpClient.kt +++ b/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/configuration/internal/HttpClient.kt @@ -18,8 +18,7 @@ internal fun algoliaHttpClient( agent: AlgoliaAgent, ) = httpClientOf(options) { configure(appId, apiKey, options, agent) } -private fun httpClientOf(options: ClientOptions, block: HttpClientConfig<*>.() -> Unit) = - options.engine?.let { HttpClient(it, block) } ?: HttpClient(block) +private fun httpClientOf(options: ClientOptions, block: HttpClientConfig<*>.() -> Unit) = options.engine?.let { HttpClient(it, block) } ?: HttpClient(block) internal fun HttpClientConfig<*>.configure( appId: String, diff --git a/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/exception/internal/Throwable.kt b/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/exception/internal/Throwable.kt index 0a14391720c..73a02e82677 100644 --- a/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/exception/internal/Throwable.kt +++ b/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/exception/internal/Throwable.kt @@ -6,15 +6,11 @@ import com.algolia.client.exception.AlgoliaRuntimeException import io.ktor.client.plugins.* /** Coerce a Throwable to a [AlgoliaClientException]. */ -internal fun Throwable.asClientException(): AlgoliaClientException { - return AlgoliaClientException(message = message, cause = this) -} +internal fun Throwable.asClientException(): AlgoliaClientException = AlgoliaClientException(message = message, cause = this) /** Coerce a [ResponseException] to a [AlgoliaRuntimeException]. */ -internal fun ResponseException.asApiException(): AlgoliaApiException { - return AlgoliaApiException( - message = message, - cause = this, - httpErrorCode = response.status.value, - ) -} +internal fun ResponseException.asApiException(): AlgoliaApiException = AlgoliaApiException( + message = message, + cause = this, + httpErrorCode = response.status.value, +) diff --git a/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/extensions/SearchClient.kt b/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/extensions/SearchClient.kt index 9eaa38cab7d..6bb1b44e665 100644 --- a/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/extensions/SearchClient.kt +++ b/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/extensions/SearchClient.kt @@ -41,36 +41,34 @@ public suspend fun SearchClient.waitForApiKey( initialDelay: Duration = 200.milliseconds, maxDelay: Duration = 5.seconds, requestOptions: RequestOptions? = null, -): GetApiKeyResponse? { - return when (operation) { - ApiKeyOperation.Add -> waitKeyCreation( - key = key, - maxRetries = maxRetries, - timeout = timeout, - initialDelay = initialDelay, - maxDelay = maxDelay, - requestOptions = requestOptions, - ) +): GetApiKeyResponse? = when (operation) { + ApiKeyOperation.Add -> waitKeyCreation( + key = key, + maxRetries = maxRetries, + timeout = timeout, + initialDelay = initialDelay, + maxDelay = maxDelay, + requestOptions = requestOptions, + ) - ApiKeyOperation.Delete -> waitKeyDelete( - key = key, - maxRetries = maxRetries, - timeout = timeout, - initialDelay = initialDelay, - maxDelay = maxDelay, - requestOptions = requestOptions, - ) + ApiKeyOperation.Delete -> waitKeyDelete( + key = key, + maxRetries = maxRetries, + timeout = timeout, + initialDelay = initialDelay, + maxDelay = maxDelay, + requestOptions = requestOptions, + ) - ApiKeyOperation.Update -> waitKeyUpdate( - key = key, - apiKey = requireNotNull(apiKey) { "apiKey is required for update api key operation" }, - timeout = timeout, - maxRetries = maxRetries, - initialDelay = initialDelay, - maxDelay = maxDelay, - requestOptions = requestOptions, - ) - } + ApiKeyOperation.Update -> waitKeyUpdate( + key = key, + apiKey = requireNotNull(apiKey) { "apiKey is required for update api key operation" }, + timeout = timeout, + maxRetries = maxRetries, + initialDelay = initialDelay, + maxDelay = maxDelay, + requestOptions = requestOptions, + ) } /** @@ -96,16 +94,14 @@ public suspend fun SearchClient.waitForTask( initialDelay: Duration = 200.milliseconds, maxDelay: Duration = 5.seconds, requestOptions: RequestOptions? = null, -): GetTaskResponse { - return retryUntil( - timeout = timeout, - maxRetries = maxRetries, - initialDelay = initialDelay, - maxDelay = maxDelay, - retry = { getTask(indexName, taskID, requestOptions) }, - until = { it.status == TaskStatus.Published }, - ) -} +): GetTaskResponse = retryUntil( + timeout = timeout, + maxRetries = maxRetries, + initialDelay = initialDelay, + maxDelay = maxDelay, + retry = { getTask(indexName, taskID, requestOptions) }, + until = { it.status == TaskStatus.Published }, +) @Deprecated( "Please use waitForTask instead", @@ -119,17 +115,15 @@ public suspend fun SearchClient.waitTask( initialDelay: Duration = 200.milliseconds, maxDelay: Duration = 5.seconds, requestOptions: RequestOptions? = null, -): TaskStatus { - return waitForTask( - indexName = indexName, - taskID = taskID, - maxRetries = maxRetries, - timeout = timeout, - initialDelay = initialDelay, - maxDelay = maxDelay, - requestOptions = requestOptions, - ).status -} +): TaskStatus = waitForTask( + indexName = indexName, + taskID = taskID, + maxRetries = maxRetries, + timeout = timeout, + initialDelay = initialDelay, + maxDelay = maxDelay, + requestOptions = requestOptions, +).status /** * Wait for an application-level [taskID] to complete before executing the next line of code. @@ -148,16 +142,14 @@ public suspend fun SearchClient.waitForAppTask( initialDelay: Duration = 200.milliseconds, maxDelay: Duration = 5.seconds, requestOptions: RequestOptions? = null, -): GetTaskResponse { - return retryUntil( - timeout = timeout, - maxRetries = maxRetries, - initialDelay = initialDelay, - maxDelay = maxDelay, - retry = { getAppTask(taskID, requestOptions) }, - until = { it.status == TaskStatus.Published }, - ) -} +): GetTaskResponse = retryUntil( + timeout = timeout, + maxRetries = maxRetries, + initialDelay = initialDelay, + maxDelay = maxDelay, + retry = { getAppTask(taskID, requestOptions) }, + until = { it.status == TaskStatus.Published }, +) @Deprecated( "Please use waitForAppTask instead", @@ -170,16 +162,14 @@ public suspend fun SearchClient.waitAppTask( initialDelay: Duration = 200.milliseconds, maxDelay: Duration = 5.seconds, requestOptions: RequestOptions? = null, -): TaskStatus { - return waitForAppTask( - taskID = taskID, - maxRetries = maxRetries, - timeout = timeout, - initialDelay = initialDelay, - maxDelay = maxDelay, - requestOptions = requestOptions, - ).status -} +): TaskStatus = waitForAppTask( + taskID = taskID, + maxRetries = maxRetries, + timeout = timeout, + initialDelay = initialDelay, + maxDelay = maxDelay, + requestOptions = requestOptions, +).status /** * Wait on an API key update operation. @@ -201,28 +191,26 @@ public suspend fun SearchClient.waitKeyUpdate( initialDelay: Duration = 200.milliseconds, maxDelay: Duration = 5.seconds, requestOptions: RequestOptions? = null, -): GetApiKeyResponse { - return retryUntil( - timeout = timeout, - maxRetries = maxRetries, - initialDelay = initialDelay, - maxDelay = maxDelay, - retry = { getApiKey(key, requestOptions) }, - until = { - apiKey == - ApiKey( - acl = it.acl, - description = it.description, - indexes = it.indexes, - maxHitsPerQuery = it.maxHitsPerQuery, - maxQueriesPerIPPerHour = it.maxQueriesPerIPPerHour, - queryParameters = it.queryParameters, - referers = it.referers, - validity = it.validity, - ) - }, - ) -} +): GetApiKeyResponse = retryUntil( + timeout = timeout, + maxRetries = maxRetries, + initialDelay = initialDelay, + maxDelay = maxDelay, + retry = { getApiKey(key, requestOptions) }, + until = { + apiKey == + ApiKey( + acl = it.acl, + description = it.description, + indexes = it.indexes, + maxHitsPerQuery = it.maxHitsPerQuery, + maxQueriesPerIPPerHour = it.maxQueriesPerIPPerHour, + queryParameters = it.queryParameters, + referers = it.referers, + validity = it.validity, + ) + }, +) /** * Wait on an API key creation operation. @@ -240,23 +228,21 @@ public suspend fun SearchClient.waitKeyCreation( initialDelay: Duration = 200.milliseconds, maxDelay: Duration = 5.seconds, requestOptions: RequestOptions? = null, -): GetApiKeyResponse { - return retryUntil( - timeout = timeout, - maxRetries = maxRetries, - initialDelay = initialDelay, - maxDelay = maxDelay, - retry = { - try { - val response = getApiKey(key, requestOptions) - Result.success(response) - } catch (e: AlgoliaApiException) { - Result.failure(e) - } - }, - until = { it.isSuccess }, - ).getOrThrow() -} +): GetApiKeyResponse = retryUntil( + timeout = timeout, + maxRetries = maxRetries, + initialDelay = initialDelay, + maxDelay = maxDelay, + retry = { + try { + val response = getApiKey(key, requestOptions) + Result.success(response) + } catch (e: AlgoliaApiException) { + Result.failure(e) + } + }, + until = { it.isSuccess }, +).getOrThrow() /** * Wait on a delete API ket operation. @@ -382,16 +368,14 @@ public suspend fun SearchClient.saveObjects( waitForTask: Boolean = false, batchSize: Int = 1000, requestOptions: RequestOptions? = null, -): List { - return this.chunkedBatch( - indexName = indexName, - objects = objects, - action = Action.AddObject, - waitForTask = waitForTask, - batchSize = batchSize, - requestOptions = requestOptions, - ) -} +): List = this.chunkedBatch( + indexName = indexName, + objects = objects, + action = Action.AddObject, + waitForTask = waitForTask, + batchSize = batchSize, + requestOptions = requestOptions, +) /** * Helper: Deletes every records for the given objectIDs. The `chunkedBatch` helper is used under the hood, which creates a `batch` requests with at most 1000 objectIDs in it. @@ -410,16 +394,14 @@ public suspend fun SearchClient.deleteObjects( waitForTask: Boolean = false, batchSize: Int = 1000, requestOptions: RequestOptions? = null, -): List { - return this.chunkedBatch( - indexName = indexName, - objects = objectIDs.map { id -> JsonObject(mapOf("objectID" to Json.encodeToJsonElement(id))) }, - action = Action.DeleteObject, - waitForTask = waitForTask, - batchSize = batchSize, - requestOptions = requestOptions, - ) -} +): List = this.chunkedBatch( + indexName = indexName, + objects = objectIDs.map { id -> JsonObject(mapOf("objectID" to Json.encodeToJsonElement(id))) }, + action = Action.DeleteObject, + waitForTask = waitForTask, + batchSize = batchSize, + requestOptions = requestOptions, +) /** * Helper: Replaces object content of all the given objects according to their respective `objectID` field. The `chunkedBatch` helper is used under the hood, which creates a `batch` requests with at most 1000 objects in it. @@ -440,16 +422,14 @@ public suspend fun SearchClient.partialUpdateObjects( waitForTask: Boolean = false, batchSize: Int = 1000, requestOptions: RequestOptions? = null, -): List { - return this.chunkedBatch( - indexName = indexName, - objects = objects, - action = if (createIfNotExists) Action.PartialUpdateObject else Action.PartialUpdateObjectNoCreate, - waitForTask = waitForTask, - batchSize = batchSize, - requestOptions = requestOptions, - ) -} +): List = this.chunkedBatch( + indexName = indexName, + objects = objects, + action = if (createIfNotExists) Action.PartialUpdateObject else Action.PartialUpdateObjectNoCreate, + waitForTask = waitForTask, + batchSize = batchSize, + requestOptions = requestOptions, +) /** * Push a new set of objects and remove all previous ones. Settings, synonyms and query rules are untouched. @@ -622,19 +602,17 @@ public suspend fun SearchClient.browseObjects( validate: (BrowseResponse) -> Boolean = { response -> response.cursor == null }, aggregator: ((BrowseResponse) -> Unit), requestOptions: RequestOptions? = null, -): BrowseResponse { - return createIterable( - execute = { previousResponse -> - browse( - indexName, - params.copy(hitsPerPage = params.hitsPerPage ?: 1000, cursor = previousResponse?.cursor), - requestOptions, - ) - }, - validate = validate, - aggregator = aggregator, - ) -} +): BrowseResponse = createIterable( + execute = { previousResponse -> + browse( + indexName, + params.copy(hitsPerPage = params.hitsPerPage ?: 1000, cursor = previousResponse?.cursor), + requestOptions, + ) + }, + validate = validate, + aggregator = aggregator, +) /** * Helper: Returns an iterator on top of the `browse` method. diff --git a/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/extensions/SearchForHits.kt b/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/extensions/SearchForHits.kt index 0d7ab801ca1..aa74fb4fd17 100644 --- a/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/extensions/SearchForHits.kt +++ b/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/extensions/SearchForHits.kt @@ -12,83 +12,81 @@ public fun SearchForHits.Companion.from( searchParamsObject: SearchParamsObject, indexName: String, params: String? = null -): SearchForHits { - return SearchForHits( - params = params, - query = searchParamsObject.query, - similarQuery = searchParamsObject.similarQuery, - filters = searchParamsObject.filters, - facetFilters = searchParamsObject.facetFilters, - optionalFilters = searchParamsObject.optionalFilters, - numericFilters = searchParamsObject.numericFilters, - tagFilters = searchParamsObject.tagFilters, - sumOrFiltersScores = searchParamsObject.sumOrFiltersScores, - restrictSearchableAttributes = searchParamsObject.restrictSearchableAttributes, - facets = searchParamsObject.facets, - facetingAfterDistinct = searchParamsObject.facetingAfterDistinct, - page = searchParamsObject.page, - offset = searchParamsObject.offset, - length = searchParamsObject.length, - aroundLatLng = searchParamsObject.aroundLatLng, - aroundLatLngViaIP = searchParamsObject.aroundLatLngViaIP, - aroundRadius = searchParamsObject.aroundRadius, - aroundPrecision = searchParamsObject.aroundPrecision, - minimumAroundRadius = searchParamsObject.minimumAroundRadius, - insideBoundingBox = searchParamsObject.insideBoundingBox, - insidePolygon = searchParamsObject.insidePolygon, - naturalLanguages = searchParamsObject.naturalLanguages, - ruleContexts = searchParamsObject.ruleContexts, - personalizationImpact = searchParamsObject.personalizationImpact, - userToken = searchParamsObject.userToken, - getRankingInfo = searchParamsObject.getRankingInfo, - synonyms = searchParamsObject.synonyms, - clickAnalytics = searchParamsObject.clickAnalytics, - analytics = searchParamsObject.analytics, - analyticsTags = searchParamsObject.analyticsTags, - percentileComputation = searchParamsObject.percentileComputation, - enableABTest = searchParamsObject.enableABTest, - attributesToRetrieve = searchParamsObject.attributesToRetrieve, - ranking = searchParamsObject.ranking, - relevancyStrictness = searchParamsObject.relevancyStrictness, - attributesToHighlight = searchParamsObject.attributesToHighlight, - attributesToSnippet = searchParamsObject.attributesToSnippet, - highlightPreTag = searchParamsObject.highlightPreTag, - highlightPostTag = searchParamsObject.highlightPostTag, - snippetEllipsisText = searchParamsObject.snippetEllipsisText, - restrictHighlightAndSnippetArrays = searchParamsObject.restrictHighlightAndSnippetArrays, - hitsPerPage = searchParamsObject.hitsPerPage, - minWordSizefor1Typo = searchParamsObject.minWordSizefor1Typo, - minWordSizefor2Typos = searchParamsObject.minWordSizefor2Typos, - typoTolerance = searchParamsObject.typoTolerance, - allowTyposOnNumericTokens = searchParamsObject.allowTyposOnNumericTokens, - disableTypoToleranceOnAttributes = searchParamsObject.disableTypoToleranceOnAttributes, - ignorePlurals = searchParamsObject.ignorePlurals, - removeStopWords = searchParamsObject.removeStopWords, - queryLanguages = searchParamsObject.queryLanguages, - decompoundQuery = searchParamsObject.decompoundQuery, - enableRules = searchParamsObject.enableRules, - enablePersonalization = searchParamsObject.enablePersonalization, - queryType = searchParamsObject.queryType, - removeWordsIfNoResults = searchParamsObject.removeWordsIfNoResults, - mode = searchParamsObject.mode, - semanticSearch = searchParamsObject.semanticSearch, - advancedSyntax = searchParamsObject.advancedSyntax, - optionalWords = searchParamsObject.optionalWords, - disableExactOnAttributes = searchParamsObject.disableExactOnAttributes, - exactOnSingleWordQuery = searchParamsObject.exactOnSingleWordQuery, - alternativesAsExact = searchParamsObject.alternativesAsExact, - advancedSyntaxFeatures = searchParamsObject.advancedSyntaxFeatures, - distinct = searchParamsObject.distinct, - replaceSynonymsInHighlight = searchParamsObject.replaceSynonymsInHighlight, - minProximity = searchParamsObject.minProximity, - responseFields = searchParamsObject.responseFields, - maxValuesPerFacet = searchParamsObject.maxValuesPerFacet, - sortFacetValuesBy = searchParamsObject.sortFacetValuesBy, - attributeCriteriaComputedByMinProximity = searchParamsObject.attributeCriteriaComputedByMinProximity, - renderingContent = searchParamsObject.renderingContent, - enableReRanking = searchParamsObject.enableReRanking, - reRankingApplyFilter = searchParamsObject.reRankingApplyFilter, - indexName = indexName, - type = SearchTypeDefault.Default, - ) -} +): SearchForHits = SearchForHits( + params = params, + query = searchParamsObject.query, + similarQuery = searchParamsObject.similarQuery, + filters = searchParamsObject.filters, + facetFilters = searchParamsObject.facetFilters, + optionalFilters = searchParamsObject.optionalFilters, + numericFilters = searchParamsObject.numericFilters, + tagFilters = searchParamsObject.tagFilters, + sumOrFiltersScores = searchParamsObject.sumOrFiltersScores, + restrictSearchableAttributes = searchParamsObject.restrictSearchableAttributes, + facets = searchParamsObject.facets, + facetingAfterDistinct = searchParamsObject.facetingAfterDistinct, + page = searchParamsObject.page, + offset = searchParamsObject.offset, + length = searchParamsObject.length, + aroundLatLng = searchParamsObject.aroundLatLng, + aroundLatLngViaIP = searchParamsObject.aroundLatLngViaIP, + aroundRadius = searchParamsObject.aroundRadius, + aroundPrecision = searchParamsObject.aroundPrecision, + minimumAroundRadius = searchParamsObject.minimumAroundRadius, + insideBoundingBox = searchParamsObject.insideBoundingBox, + insidePolygon = searchParamsObject.insidePolygon, + naturalLanguages = searchParamsObject.naturalLanguages, + ruleContexts = searchParamsObject.ruleContexts, + personalizationImpact = searchParamsObject.personalizationImpact, + userToken = searchParamsObject.userToken, + getRankingInfo = searchParamsObject.getRankingInfo, + synonyms = searchParamsObject.synonyms, + clickAnalytics = searchParamsObject.clickAnalytics, + analytics = searchParamsObject.analytics, + analyticsTags = searchParamsObject.analyticsTags, + percentileComputation = searchParamsObject.percentileComputation, + enableABTest = searchParamsObject.enableABTest, + attributesToRetrieve = searchParamsObject.attributesToRetrieve, + ranking = searchParamsObject.ranking, + relevancyStrictness = searchParamsObject.relevancyStrictness, + attributesToHighlight = searchParamsObject.attributesToHighlight, + attributesToSnippet = searchParamsObject.attributesToSnippet, + highlightPreTag = searchParamsObject.highlightPreTag, + highlightPostTag = searchParamsObject.highlightPostTag, + snippetEllipsisText = searchParamsObject.snippetEllipsisText, + restrictHighlightAndSnippetArrays = searchParamsObject.restrictHighlightAndSnippetArrays, + hitsPerPage = searchParamsObject.hitsPerPage, + minWordSizefor1Typo = searchParamsObject.minWordSizefor1Typo, + minWordSizefor2Typos = searchParamsObject.minWordSizefor2Typos, + typoTolerance = searchParamsObject.typoTolerance, + allowTyposOnNumericTokens = searchParamsObject.allowTyposOnNumericTokens, + disableTypoToleranceOnAttributes = searchParamsObject.disableTypoToleranceOnAttributes, + ignorePlurals = searchParamsObject.ignorePlurals, + removeStopWords = searchParamsObject.removeStopWords, + queryLanguages = searchParamsObject.queryLanguages, + decompoundQuery = searchParamsObject.decompoundQuery, + enableRules = searchParamsObject.enableRules, + enablePersonalization = searchParamsObject.enablePersonalization, + queryType = searchParamsObject.queryType, + removeWordsIfNoResults = searchParamsObject.removeWordsIfNoResults, + mode = searchParamsObject.mode, + semanticSearch = searchParamsObject.semanticSearch, + advancedSyntax = searchParamsObject.advancedSyntax, + optionalWords = searchParamsObject.optionalWords, + disableExactOnAttributes = searchParamsObject.disableExactOnAttributes, + exactOnSingleWordQuery = searchParamsObject.exactOnSingleWordQuery, + alternativesAsExact = searchParamsObject.alternativesAsExact, + advancedSyntaxFeatures = searchParamsObject.advancedSyntaxFeatures, + distinct = searchParamsObject.distinct, + replaceSynonymsInHighlight = searchParamsObject.replaceSynonymsInHighlight, + minProximity = searchParamsObject.minProximity, + responseFields = searchParamsObject.responseFields, + maxValuesPerFacet = searchParamsObject.maxValuesPerFacet, + sortFacetValuesBy = searchParamsObject.sortFacetValuesBy, + attributeCriteriaComputedByMinProximity = searchParamsObject.attributeCriteriaComputedByMinProximity, + renderingContent = searchParamsObject.renderingContent, + enableReRanking = searchParamsObject.enableReRanking, + reRankingApplyFilter = searchParamsObject.reRankingApplyFilter, + indexName = indexName, + type = SearchTypeDefault.Default, +) diff --git a/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/extensions/internal/Encoding.kt b/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/extensions/internal/Encoding.kt index 42abd138ad9..4354054b8d9 100644 --- a/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/extensions/internal/Encoding.kt +++ b/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/extensions/internal/Encoding.kt @@ -15,12 +15,10 @@ internal object Hex { /** * Take the [ByteArray] and convert it to a hex encoded [String]. */ - internal fun buildString(byteArray: ByteArray): String { - return buildString(capacity = byteArray.size * 2) { - for (byte in byteArray) { - append(HEX_CODE[byte.toInt() shr 4 and 0xF]) - append(HEX_CODE[byte.toInt() and 0xF]) - } + internal fun buildString(byteArray: ByteArray): String = buildString(capacity = byteArray.size * 2) { + for (byte in byteArray) { + append(HEX_CODE[byte.toInt() shr 4 and 0xF]) + append(HEX_CODE[byte.toInt() and 0xF]) } } } diff --git a/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/extensions/internal/Json.kt b/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/extensions/internal/Json.kt index ca8ff7a4b93..5fb9b48334a 100644 --- a/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/extensions/internal/Json.kt +++ b/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/extensions/internal/Json.kt @@ -9,21 +9,18 @@ import kotlinx.serialization.json.* * Casts the [Decoder] instance to a [JsonDecoder] if possible, otherwise throws a * [SerializationException]. */ -internal fun Decoder.asJsonDecoder() = - this as? JsonDecoder - ?: throw SerializationException("This class can be decoded only by Json format") +internal fun Decoder.asJsonDecoder() = this as? JsonDecoder + ?: throw SerializationException("This class can be decoded only by Json format") /** Decodes the current JSON element as a [JsonObject] using the [JsonDecoder] instance. */ -internal fun JsonDecoder.decodeJsonObject() = - decodeJsonElement() as? JsonObject ?: throw SerializationException("Expected JsonObject") +internal fun JsonDecoder.decodeJsonObject() = decodeJsonElement() as? JsonObject ?: throw SerializationException("Expected JsonObject") /** * Casts the [Encoder] instance to a [JsonEncoder] if possible, otherwise throws a * [SerializationException]. */ -internal fun Encoder.asJsonEncoder() = - this as? JsonEncoder - ?: throw SerializationException("This class can be encoded only by Json format") +internal fun Encoder.asJsonEncoder() = this as? JsonEncoder + ?: throw SerializationException("This class can be encoded only by Json format") /** * Returns true if [JsonElement] is an integer, false otherwise. diff --git a/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/transport/internal/KtorRequester.kt b/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/transport/internal/KtorRequester.kt index 27b170b651b..85fb51a1996 100644 --- a/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/transport/internal/KtorRequester.kt +++ b/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/transport/internal/KtorRequester.kt @@ -78,22 +78,18 @@ public class KtorRequester( throw AlgoliaRetryException(errors) } - private fun callTypeOf(requestConfig: RequestConfig): CallType { - return if (requestConfig.isRead || requestConfig.method == RequestMethod.GET) { - CallType.Read - } else { - CallType.Write - } + private fun callTypeOf(requestConfig: RequestConfig): CallType = if (requestConfig.isRead || requestConfig.method == RequestMethod.GET) { + CallType.Read + } else { + CallType.Write } /** Get list of [RetryableHost] for a given [CallType]. */ - private suspend fun callableHosts(callType: CallType): List { - return mutex.withLock { - retryableHosts.expireHostsOlderThan(hostStatusExpirationDelayMS) - val hostsCallType = retryableHosts.filterCallType(callType) - val hostsCallTypeAreUp = hostsCallType.filter { it.isUp } - hostsCallTypeAreUp.ifEmpty { hostsCallType.onEach { it.reset() } } - } + private suspend fun callableHosts(callType: CallType): List = mutex.withLock { + retryableHosts.expireHostsOlderThan(hostStatusExpirationDelayMS) + val hostsCallType = retryableHosts.filterCallType(callType) + val hostsCallTypeAreUp = hostsCallType.filter { it.isUp } + hostsCallTypeAreUp.ifEmpty { hostsCallType.onEach { it.reset() } } } /** Handle API request exceptions. */ @@ -136,41 +132,36 @@ public class KtorRequester( } } - private fun List.filterCallType(callType: CallType): List { - return filter { it.callType == callType || it.callType == null } - } + private fun List.filterCallType(callType: CallType): List = filter { it.callType == callType || it.callType == null } private fun httpRequestBuilderOf( requestConfig: RequestConfig, requestOptions: RequestOptions? = null, - ): HttpRequestBuilder { - return HttpRequestBuilder().apply { - url { - pathSegments = requestConfig.path - } - method = requestConfig.method.ktorHttpMethod - contentType(ContentType.Application.Json) - - requestConfig.run { - requestHeaders(headers) - queryParameter(query) - when { - body != null -> setBody(body.body, body.bodyType) - requiresBody(requestConfig) -> setBody(EmptyObject) - else -> setBody(EmptyContent) - } + ): HttpRequestBuilder = HttpRequestBuilder().apply { + url { + pathSegments = requestConfig.path + } + method = requestConfig.method.ktorHttpMethod + contentType(ContentType.Application.Json) + + requestConfig.run { + requestHeaders(headers) + queryParameter(query) + when { + body != null -> setBody(body.body, body.bodyType) + requiresBody(requestConfig) -> setBody(EmptyObject) + else -> setBody(EmptyContent) } + } - requestOptions?.run { - requestHeaders(headers) - queryParameter(urlParameters) - body?.let { setBody(it) } - } + requestOptions?.run { + requestHeaders(headers) + queryParameter(urlParameters) + body?.let { setBody(it) } } } - private fun requiresBody(requestConfig: RequestConfig) = - requestConfig.method == RequestMethod.POST || requestConfig.method == RequestMethod.PUT + private fun requiresBody(requestConfig: RequestConfig) = requestConfig.method == RequestMethod.POST || requestConfig.method == RequestMethod.PUT private fun HttpRequestBuilder.requestHeaders(headerOptions: Map) { headers.replaceAll(headerOptions) diff --git a/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/transport/internal/Requester.kt b/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/transport/internal/Requester.kt index f8148cd00bf..8f1edc1cde6 100644 --- a/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/transport/internal/Requester.kt +++ b/clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/transport/internal/Requester.kt @@ -30,9 +30,7 @@ import kotlin.time.Duration internal suspend inline fun Requester.execute( requestConfig: RequestConfig, requestOptions: RequestOptions? = null, -): T { - return execute(requestConfig, requestOptions, typeInfo()) -} +): T = execute(requestConfig, requestOptions, typeInfo()) /** * Creates a [Requester] instance. diff --git a/clients/algoliasearch-client-kotlin/client/src/jvmMain/kotlin/com/algolia/client/configuration/internal/Platform.jvm.kt b/clients/algoliasearch-client-kotlin/client/src/jvmMain/kotlin/com/algolia/client/configuration/internal/Platform.jvm.kt index 1247951eb2c..33aec09ecdd 100644 --- a/clients/algoliasearch-client-kotlin/client/src/jvmMain/kotlin/com/algolia/client/configuration/internal/Platform.jvm.kt +++ b/clients/algoliasearch-client-kotlin/client/src/jvmMain/kotlin/com/algolia/client/configuration/internal/Platform.jvm.kt @@ -5,9 +5,7 @@ import com.algolia.client.configuration.ClientOptions import com.algolia.client.configuration.CompressionType import io.ktor.client.* -internal actual fun platformAgentSegment(): AgentSegment { - return AgentSegment("JVM", System.getProperty("java.version")) -} +internal actual fun platformAgentSegment(): AgentSegment = AgentSegment("JVM", System.getProperty("java.version")) internal actual fun HttpClientConfig<*>.platformConfig(options: ClientOptions) { if (options.compressionType == CompressionType.GZIP) { diff --git a/clients/algoliasearch-client-kotlin/gradle/libs.versions.toml b/clients/algoliasearch-client-kotlin/gradle/libs.versions.toml index 2c3b7468854..d1a68241aea 100644 --- a/clients/algoliasearch-client-kotlin/gradle/libs.versions.toml +++ b/clients/algoliasearch-client-kotlin/gradle/libs.versions.toml @@ -31,4 +31,4 @@ kotlin-multiplaform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = kotlinx-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } kotlinx-binary-validator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version = "0.17.0" } maven-publish = { id = "com.vanniktech.maven.publish", version = "0.30.0" } -spotless = { id = "com.diffplug.gradle.spotless", version = "6.23.3" } +spotless = { id = "com.diffplug.gradle.spotless", version = "7.0.1" } diff --git a/templates/kotlin/oneof_interface.mustache b/templates/kotlin/oneof_interface.mustache index 1b3b7555418..9546c1abbac 100644 --- a/templates/kotlin/oneof_interface.mustache +++ b/templates/kotlin/oneof_interface.mustache @@ -58,9 +58,8 @@ public sealed interface {{classname}} { {{^vendorExtensions.x-is-multi-array}}{{^vendorExtensions.x-is-multi-map}} {{#composedSchemas.oneOf}} - public fun of(value: {{{datatypeWithEnum}}}): {{classname}} { - return {{#lambda.type-to-name}}{{{datatypeWithEnum}}}{{/lambda.type-to-name}}Value(value); - } + public fun of(value: {{{datatypeWithEnum}}}): {{classname}} = {{#lambda.type-to-name}}{{{datatypeWithEnum}}}{{/lambda.type-to-name}}Value(value) + {{/composedSchemas.oneOf}} {{/vendorExtensions.x-is-multi-map}}{{/vendorExtensions.x-is-multi-array}} } diff --git a/templates/kotlin/snippets/libs.versions.mustache b/templates/kotlin/snippets/libs.versions.mustache index 7918195f720..6a4bb4e5d4c 100644 --- a/templates/kotlin/snippets/libs.versions.mustache +++ b/templates/kotlin/snippets/libs.versions.mustache @@ -12,4 +12,4 @@ ktor-client-darwin = { group = "io.ktor", name = "ktor-client-darwin", version.r [plugins] kotlin-multiplaform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } kotlinx-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } -spotless = { id = "com.diffplug.spotless", version = "6.25.0" } +spotless = { id = "com.diffplug.spotless", version = "7.0.1" } diff --git a/tests/output/kotlin/gradle/libs.versions.toml b/tests/output/kotlin/gradle/libs.versions.toml index 7806ce7422c..9a9c500d50d 100644 --- a/tests/output/kotlin/gradle/libs.versions.toml +++ b/tests/output/kotlin/gradle/libs.versions.toml @@ -13,4 +13,4 @@ ktor-client-darwin = { group = "io.ktor", name = "ktor-client-darwin", version.r [plugins] kotlin-multiplaform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } kotlinx-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } -spotless = { id = "com.diffplug.spotless", version = "6.25.0" } +spotless = { id = "com.diffplug.spotless", version = "7.0.1" }