All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.http4k.core.Parameters.kt Maven / Gradle / Ivy

package org.http4k.core

import java.net.URLDecoder
import java.net.URLEncoder

typealias Parameters = List

fun Uri.queries(): Parameters = query.toParameters()

fun Parameters.toUrlFormEncoded(): String = joinToString("&") { it.first.toFormEncoded() + it.second?.let { "=" + it.toFormEncoded() }.orEmpty() }

fun Parameters.toParametersMap(): Map> = groupBy(Parameter::first, Parameter::second)

fun  Map>.getFirst(key: K) = this[key]?.firstOrNull()

fun String.toParameters() = if (isNotEmpty()) split("&").map(String::toParameter) else listOf()

fun Parameters.findSingle(name: String): String? = find { it.first == name }?.second

fun Parameters.findMultiple(name: String) = filter { it.first == name }.map { it.second }

private fun String.toParameter(): Parameter = split("=", limit = 2).map(String::fromFormEncoded).let { l -> l.elementAt(0) to l.elementAtOrNull(1) }

internal fun String.fromFormEncoded() = URLDecoder.decode(this, "UTF-8")

internal fun String.toFormEncoded() = URLEncoder.encode(this, "UTF-8")

internal typealias Parameter = Pair




© 2015 - 2025 Weber Informatics LLC | Privacy Policy