add all client realizations for core repos
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
package com.insanusmokrassar.postssystem.ktor
|
||||
|
||||
import com.soywiz.klock.DateTime
|
||||
|
||||
typealias FromToDateTime = Pair<DateTime?, DateTime?>
|
||||
|
||||
val FromToDateTime.asFromToUrlPart: QueryParams
|
||||
get() = mapOf(
|
||||
"from" to first ?.unixMillis ?.toString(),
|
||||
"to" to second ?.unixMillis ?.toString()
|
||||
)
|
||||
|
||||
val QueryParams.extractFromToDateTime: FromToDateTime
|
||||
get() = FromToDateTime(
|
||||
get("from") ?.toDoubleOrNull() ?.let { DateTime(it) },
|
||||
get("to") ?.toDoubleOrNull() ?.let { DateTime(it) }
|
||||
)
|
@@ -0,0 +1,19 @@
|
||||
package com.insanusmokrassar.postssystem.ktor
|
||||
|
||||
import com.insanusmokrassar.postssystem.utils.common.pagination.*
|
||||
|
||||
private val numberRegex = Regex("[\\d]{1,10}")
|
||||
private val pageRegex = Regex("page=${numberRegex.pattern}")
|
||||
private val sizeRegex = Regex("size=${numberRegex.pattern}")
|
||||
|
||||
val Pagination.asUrlQueryParts
|
||||
get() = mapOf(
|
||||
"page" to page.toString(),
|
||||
"size" to size.toString()
|
||||
)
|
||||
|
||||
val Map<String, String?>.extractPagination: Pagination
|
||||
get() = SimplePagination(
|
||||
get("page") ?.toIntOrNull() ?: 0,
|
||||
get("size") ?.toIntOrNull() ?: defaultMediumPageSize
|
||||
)
|
@@ -0,0 +1,16 @@
|
||||
package com.insanusmokrassar.postssystem.ktor
|
||||
|
||||
typealias QueryParams = Map<String, String?>
|
||||
|
||||
val QueryParams.asUrlQuery: String
|
||||
get() = keys.joinToString("&") { "${it}${get(it) ?.let { value -> "=$value" }}" }
|
||||
fun String.includeQueryParams(
|
||||
queryParams: QueryParams
|
||||
): String = "$this${if (contains("?")) "&" else "?"}${queryParams.asUrlQuery}"
|
||||
|
||||
val String.parseUrlQuery: QueryParams
|
||||
get() = split("&").map {
|
||||
it.split("=").let { pair ->
|
||||
pair.first() to pair.getOrNull(1)
|
||||
}
|
||||
}.toMap()
|
@@ -2,4 +2,4 @@ package com.insanusmokrassar.postssystem.ktor
|
||||
|
||||
import kotlinx.serialization.cbor.Cbor
|
||||
|
||||
val standardKtorSerializer = Cbor
|
||||
val standardKtorSerialFormat = Cbor
|
||||
|
Reference in New Issue
Block a user