diff --git a/ktor/common/src/commonMain/kotlin/com/insanusmokrassar/postssystem/ktor/BuildStandardUrl.kt b/ktor/common/src/commonMain/kotlin/com/insanusmokrassar/postssystem/ktor/BuildStandardUrl.kt index 1204ec93..22be8bcc 100644 --- a/ktor/common/src/commonMain/kotlin/com/insanusmokrassar/postssystem/ktor/BuildStandardUrl.kt +++ b/ktor/common/src/commonMain/kotlin/com/insanusmokrassar/postssystem/ktor/BuildStandardUrl.kt @@ -7,3 +7,17 @@ fun buildStandardUrl( ) = "$basePart/$subpart".includeQueryParams( parameters ) + +fun buildStandardUrl( + basePart: String, + subpart: String, + parameters: List +) = "$basePart/$subpart".includeQueryParams( + parameters +) + +fun buildStandardUrl( + basePart: String, + subpart: String, + vararg parameters: QueryParam +) = buildStandardUrl(basePart, subpart, parameters.toList()) diff --git a/ktor/common/src/commonMain/kotlin/com/insanusmokrassar/postssystem/ktor/QueryParamsBuilder.kt b/ktor/common/src/commonMain/kotlin/com/insanusmokrassar/postssystem/ktor/QueryParamsBuilder.kt index 00210808..1d50ef62 100644 --- a/ktor/common/src/commonMain/kotlin/com/insanusmokrassar/postssystem/ktor/QueryParamsBuilder.kt +++ b/ktor/common/src/commonMain/kotlin/com/insanusmokrassar/postssystem/ktor/QueryParamsBuilder.kt @@ -1,13 +1,22 @@ package com.insanusmokrassar.postssystem.ktor +typealias QueryParam = Pair typealias QueryParams = Map val QueryParams.asUrlQuery: String get() = keys.joinToString("&") { "${it}${get(it) ?.let { value -> "=$value" }}" } + +val List.asUrlQuery: String + get() = joinToString("&") { (key, value) -> "${key}${value ?.let { _ -> "=$value" }}" } + fun String.includeQueryParams( queryParams: QueryParams ): String = "$this${if (contains("?")) "&" else "?"}${queryParams.asUrlQuery}" +fun String.includeQueryParams( + queryParams: List +): String = "$this${if (contains("?")) "&" else "?"}${queryParams.asUrlQuery}" + val String.parseUrlQuery: QueryParams get() = split("&").map { it.split("=").let { pair ->