ContentType.kt
- package com.hexagonkt.http.model
- import com.hexagonkt.core.media.MediaType
- import com.hexagonkt.core.assertEnabled
- import java.nio.charset.Charset
- data class ContentType(
- val mediaType: MediaType,
- val boundary: String? = null,
- val charset: Charset? = null,
- val q: Double? = null,
- ) {
- val text by lazy {
- listOfNotNull(
- mediaType.fullType,
- boundary?.let { "boundary=$it" },
- charset?.let { "charset=$it" },
- q?.let { "q=$it" }
- )
- .joinToString(";")
- }
- init {
- if (assertEnabled) {
- val a = if (boundary == null) 0 else 1
- val b = if (charset == null) 0 else 1
- val c = if (q == null) 0 else 1
- require(a + b + c in 0..1) { "Only one parameter can be set: $this" }
- require(boundary?.isNotBlank() ?: true) { "Boundary can not be blank" }
- require(q?.let { it in 0.0..1.0 } ?: true) { "Q must be in the 0 to 1 range: $q" }
- }
- }
- }