27 lines
866 B
Kotlin
27 lines
866 B
Kotlin
package be.simplenotes.app.api
|
|
|
|
import be.simplenotes.app.extensions.json
|
|
import be.simplenotes.domain.usecases.UserService
|
|
import be.simplenotes.domain.usecases.users.login.LoginForm
|
|
import kotlinx.serialization.Serializable
|
|
import kotlinx.serialization.json.Json
|
|
import org.http4k.core.Request
|
|
import org.http4k.core.Response
|
|
import org.http4k.core.Status
|
|
|
|
class ApiUserController(private val userService: UserService, private val json: Json) {
|
|
|
|
fun login(request: Request): Response {
|
|
val form = json.decodeFromString(LoginForm.serializer(), request.bodyString())
|
|
val result = userService.login(form)
|
|
return result.fold({
|
|
Response(Status.BAD_REQUEST)
|
|
}, {
|
|
Response(Status.OK).json(json.encodeToString(Token.serializer(), Token(it)))
|
|
})
|
|
}
|
|
}
|
|
|
|
@Serializable
|
|
data class Token(val token: String)
|