mirror of https://github.com/hykilpikonna/AquaDX
39 lines
1.5 KiB
Kotlin
39 lines
1.5 KiB
Kotlin
package ext
|
|
|
|
import icu.samnyan.aqua.net.utils.ApiException
|
|
import io.ktor.client.*
|
|
import io.ktor.client.engine.cio.*
|
|
import io.ktor.client.plugins.contentnegotiation.*
|
|
import io.ktor.serialization.kotlinx.json.*
|
|
import kotlinx.coroutines.Dispatchers
|
|
import kotlinx.coroutines.withContext
|
|
import org.springframework.http.HttpStatus
|
|
import org.springframework.web.bind.annotation.RequestBody
|
|
import org.springframework.web.bind.annotation.RequestHeader
|
|
import org.springframework.web.bind.annotation.RequestParam
|
|
import org.springframework.web.server.ResponseStatusException
|
|
|
|
typealias RP = RequestParam
|
|
typealias RB = RequestBody
|
|
typealias RH = RequestHeader
|
|
typealias Str = String
|
|
typealias Bool = Boolean
|
|
|
|
// Make it easier to throw a ResponseStatusException
|
|
operator fun HttpStatus.invoke(message: String? = null): Nothing = throw ApiException(value(), message ?: this.reasonPhrase)
|
|
operator fun Int.minus(message: String): Nothing = throw ApiException(this, message)
|
|
|
|
// Email validation
|
|
// https://www.baeldung.com/java-email-validation-regex
|
|
val emailRegex = "^(?=.{1,64}@)[\\p{L}0-9_-]+(\\.[\\p{L}0-9_-]+)*@[^-][\\p{L}0-9-]+(\\.[\\p{L}0-9-]+)*(\\.[\\p{L}]{2,})$".toRegex()
|
|
fun Str.isValidEmail(): Bool = emailRegex.matches(this)
|
|
|
|
fun millis() = System.currentTimeMillis()
|
|
|
|
val HTTP = HttpClient(CIO) {
|
|
install(ContentNegotiation) {
|
|
json()
|
|
}
|
|
}
|
|
|
|
suspend fun <T> async(block: suspend kotlinx.coroutines.CoroutineScope.() -> T): T = withContext(Dispatchers.IO) { block() } |