Add routes for storing/retrieving client settings

This commit is contained in:
Eike Kettner
2021-05-25 00:06:13 +02:00
parent 8c127cde5f
commit 25788a0b23
10 changed files with 342 additions and 20 deletions

View File

@ -91,7 +91,8 @@ object RestServer {
"calevent/check" -> CalEventCheckRoutes(),
"fts" -> FullTextIndexRoutes.secured(cfg, restApp.backend, token),
"folder" -> FolderRoutes(restApp.backend, token),
"customfield" -> CustomFieldRoutes(restApp.backend, token)
"customfield" -> CustomFieldRoutes(restApp.backend, token),
"clientSettings" -> ClientSettingsRoutes(restApp.backend, token)
)
def openRoutes[F[_]: Effect](cfg: Config, restApp: RestApp[F]): HttpRoutes[F] =

View File

@ -0,0 +1,52 @@
package docspell.restserver.routes
import cats.effect._
import cats.implicits._
import docspell.backend.BackendApp
import docspell.backend.auth.AuthToken
import docspell.common._
import docspell.restapi.model._
import io.circe.Json
import org.http4s.HttpRoutes
import org.http4s.circe.CirceEntityDecoder._
import org.http4s.circe.CirceEntityEncoder._
import org.http4s.dsl.Http4sDsl
object ClientSettingsRoutes {
def apply[F[_]: Effect](backend: BackendApp[F], user: AuthToken): HttpRoutes[F] = {
val dsl = new Http4sDsl[F] {}
import dsl._
HttpRoutes.of {
case req @ PUT -> Root / Ident(clientId) =>
for {
data <- req.as[Json]
_ <- backend.clientSettings.save(clientId, user.account, data)
res <- Ok(BasicResult(true, "Settings stored"))
} yield res
case GET -> Root / Ident(clientId) =>
for {
data <- backend.clientSettings.load(clientId, user.account)
res <- data match {
case Some(d) => Ok(d.settingsData)
case None => NotFound()
}
} yield res
case DELETE -> Root / Ident(clientId) =>
for {
flag <- backend.clientSettings.delete(clientId, user.account)
res <- Ok(
BasicResult(
flag,
if (flag) "Settings deleted" else "Deleting settings failed"
)
)
} yield res
}
}
}