mirror of https://git.sr.ht/~oppen/ariane
57 lines
1.7 KiB
Kotlin
57 lines
1.7 KiB
Kotlin
package oppen.tva.io
|
|
|
|
object GeminiResponse {
|
|
|
|
const val INPUT = 1
|
|
const val SUCCESS = 2
|
|
const val REDIRECT = 3
|
|
const val TEMPORARY_FAILURE = 4
|
|
const val PERMANENT_FAILURE = 5
|
|
const val CLIENT_CERTIFICATE_REQUIRED = 6
|
|
const val UNKNOWN = -1
|
|
|
|
fun parseHeader(header: String): Header{
|
|
var cleanHeader = header.replace("\\s+".toRegex(), " ")
|
|
var meta = ""
|
|
when {
|
|
header.startsWith("2") -> {
|
|
val segments = cleanHeader.trim().split(" ")
|
|
meta = when {
|
|
segments.size > 1 -> segments[1]
|
|
else -> "text/gemini; charset=utf-8"
|
|
}
|
|
}
|
|
else -> {
|
|
|
|
meta = when {
|
|
cleanHeader.contains(" ") -> cleanHeader.substring(cleanHeader.indexOf(" ") + 1)
|
|
else -> cleanHeader
|
|
}
|
|
}
|
|
}
|
|
|
|
return when {
|
|
header.startsWith("1") -> Header(INPUT, meta)
|
|
header.startsWith("2") -> Header(SUCCESS, meta)
|
|
header.startsWith("3") -> Header(REDIRECT, meta)
|
|
header.startsWith("4") -> Header(TEMPORARY_FAILURE, meta)
|
|
header.startsWith("5") -> Header(PERMANENT_FAILURE, meta)
|
|
header.startsWith("6") -> Header(CLIENT_CERTIFICATE_REQUIRED, meta)
|
|
else -> Header(UNKNOWN, meta)
|
|
}
|
|
}
|
|
|
|
fun getCodeString(code: Int): String{
|
|
return when(code){
|
|
1 -> "Input"
|
|
2 -> "Success"
|
|
3 -> "Redirect"
|
|
4 -> "Temporary Failure"
|
|
5 -> "Permanent Failure"
|
|
6 -> "Client Certificate Required"
|
|
else -> "Unknown: $code"
|
|
}
|
|
}
|
|
|
|
class Header(val code: Int, val meta: String)
|
|
} |