Rest.kt
- package com.hexagonkt.rest
- import com.hexagonkt.core.media.*
- import com.hexagonkt.http.model.ContentType
- import com.hexagonkt.http.model.HttpBase
- import com.hexagonkt.serialization.*
- val anyContentType = ContentType(ANY_MEDIA)
- val textContentType = ContentType(TEXT_PLAIN)
- val jsonContentType = ContentType(APPLICATION_JSON)
- val yamlContentType = ContentType(APPLICATION_YAML)
- val xmlContentType = ContentType(APPLICATION_XML)
- val tomlContentType = ContentType(APPLICATION_TOML)
- val csvContentType = ContentType(TEXT_CSV)
- fun HttpBase.bodyList(): List<*> =
- bodyString().parseList(mediaType())
- fun HttpBase.bodyMap(): Map<String, *> =
- bodyString().parseMap(mediaType())
- fun HttpBase.bodyMaps(): List<Map<String, *>> =
- bodyString().parseMaps(mediaType())
- fun <T> HttpBase.bodyObjects(converter: (Map<String, *>) -> T): List<T> =
- bodyMaps().map(converter)
- fun <T> HttpBase.bodyObject(converter: (Map<String, *>) -> T): T =
- bodyMap().let(converter)
- fun HttpBase.serializeBody(): Any =
- contentType
- ?.mediaType
- ?.let(SerializationManager::formatOfOrNull)
- ?.let { body.serialize(it) }
- ?: body
- fun HttpBase.mediaType(): MediaType =
- contentType?.mediaType ?: error("Missing content type")