mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-05 22:55:58 +00:00
Refactor UploadRoutes to remove duplicate code
This commit is contained in:
parent
f519a8effa
commit
24caba1457
@ -29,6 +29,19 @@ trait OUpload[F[_]] {
|
||||
notifyJoex: Boolean,
|
||||
itemId: Option[Ident]
|
||||
): F[OUpload.UploadResult]
|
||||
|
||||
final def submitEither(
|
||||
data: OUpload.UploadData[F],
|
||||
accOrSrc: Either[Ident, AccountId],
|
||||
notifyJoex: Boolean,
|
||||
itemId: Option[Ident]
|
||||
): F[OUpload.UploadResult] =
|
||||
accOrSrc match {
|
||||
case Right(acc) =>
|
||||
submit(data, acc, notifyJoex, itemId)
|
||||
case Left(srcId) =>
|
||||
submit(data, srcId, notifyJoex, itemId)
|
||||
}
|
||||
}
|
||||
|
||||
object OUpload {
|
||||
|
@ -2,13 +2,13 @@ package docspell.restserver.routes
|
||||
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
import docspell.common._
|
||||
import docspell.backend.BackendApp
|
||||
import docspell.backend.auth.AuthToken
|
||||
import docspell.common.{Ident, Priority}
|
||||
import docspell.restserver.Config
|
||||
import docspell.restserver.conv.Conversions._
|
||||
import docspell.restserver.http4s.ResponseGenerator
|
||||
import org.http4s.HttpRoutes
|
||||
import org.http4s._
|
||||
import org.http4s.circe.CirceEntityEncoder._
|
||||
import org.http4s.EntityDecoder._
|
||||
import org.http4s.dsl.Http4sDsl
|
||||
@ -26,32 +26,14 @@ object UploadRoutes {
|
||||
val dsl = new Http4sDsl[F] with ResponseGenerator[F] {}
|
||||
import dsl._
|
||||
|
||||
val submitting = submitFiles[F](backend, cfg, Right(user.account)) _
|
||||
|
||||
HttpRoutes.of {
|
||||
case req @ POST -> Root / "item" =>
|
||||
for {
|
||||
multipart <- req.as[Multipart[F]]
|
||||
updata <- readMultipart(
|
||||
multipart,
|
||||
logger,
|
||||
Priority.High,
|
||||
cfg.backend.files.validMimeTypes
|
||||
)
|
||||
result <- backend.upload.submit(updata, user.account, true, None)
|
||||
res <- Ok(basicResult(result))
|
||||
} yield res
|
||||
submitting(req, None, Priority.High, dsl)
|
||||
|
||||
case req @ POST -> Root / "item" / Ident(itemId) =>
|
||||
for {
|
||||
multipart <- req.as[Multipart[F]]
|
||||
updata <- readMultipart(
|
||||
multipart,
|
||||
logger,
|
||||
Priority.High,
|
||||
cfg.backend.files.validMimeTypes
|
||||
)
|
||||
result <- backend.upload.submit(updata, user.account, true, Some(itemId))
|
||||
res <- Ok(basicResult(result))
|
||||
} yield res
|
||||
submitting(req, Some(itemId), Priority.High, dsl)
|
||||
}
|
||||
}
|
||||
|
||||
@ -61,30 +43,35 @@ object UploadRoutes {
|
||||
|
||||
HttpRoutes.of {
|
||||
case req @ POST -> Root / "item" / Ident(id) =>
|
||||
for {
|
||||
multipart <- req.as[Multipart[F]]
|
||||
updata <- readMultipart(
|
||||
multipart,
|
||||
logger,
|
||||
Priority.Low,
|
||||
cfg.backend.files.validMimeTypes
|
||||
)
|
||||
result <- backend.upload.submit(updata, id, true, None)
|
||||
res <- Ok(basicResult(result))
|
||||
} yield res
|
||||
submitFiles(backend, cfg, Left(id))(req, None, Priority.Low, dsl)
|
||||
|
||||
case req @ POST -> Root / "item" / Ident(itemId) / Ident(id) =>
|
||||
for {
|
||||
multipart <- req.as[Multipart[F]]
|
||||
updata <- readMultipart(
|
||||
multipart,
|
||||
logger,
|
||||
Priority.Low,
|
||||
cfg.backend.files.validMimeTypes
|
||||
)
|
||||
result <- backend.upload.submit(updata, id, true, Some(itemId))
|
||||
res <- Ok(basicResult(result))
|
||||
} yield res
|
||||
submitFiles(backend, cfg, Left(id))(req, Some(itemId), Priority.Low, dsl)
|
||||
}
|
||||
}
|
||||
|
||||
private def submitFiles[F[_]: Effect](
|
||||
backend: BackendApp[F],
|
||||
cfg: Config,
|
||||
accOrSrc: Either[Ident, AccountId]
|
||||
)(
|
||||
req: Request[F],
|
||||
itemId: Option[Ident],
|
||||
prio: Priority,
|
||||
dsl: Http4sDsl[F]
|
||||
): F[Response[F]] = {
|
||||
import dsl._
|
||||
|
||||
for {
|
||||
multipart <- req.as[Multipart[F]]
|
||||
updata <- readMultipart(
|
||||
multipart,
|
||||
logger,
|
||||
prio,
|
||||
cfg.backend.files.validMimeTypes
|
||||
)
|
||||
result <- backend.upload.submitEither(updata, accOrSrc, true, itemId)
|
||||
res <- Ok(basicResult(result))
|
||||
} yield res
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user