mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-22 02:18:26 +00:00
Fix compile warnings after scala update
This commit is contained in:
@ -329,7 +329,7 @@ trait Conversions {
|
||||
sourceName,
|
||||
None,
|
||||
validFileTypes,
|
||||
false,
|
||||
skipDuplicates = false,
|
||||
Glob.all,
|
||||
Nil,
|
||||
None,
|
||||
@ -641,82 +641,86 @@ trait Conversions {
|
||||
def basicResult(r: SetValueResult): BasicResult =
|
||||
r match {
|
||||
case SetValueResult.FieldNotFound =>
|
||||
BasicResult(false, "The given field is unknown")
|
||||
BasicResult(success = false, "The given field is unknown")
|
||||
case SetValueResult.ItemNotFound =>
|
||||
BasicResult(false, "The given item is unknown")
|
||||
BasicResult(success = false, "The given item is unknown")
|
||||
case SetValueResult.ValueInvalid(msg) =>
|
||||
BasicResult(false, s"The value is invalid: $msg")
|
||||
BasicResult(success = false, s"The value is invalid: $msg")
|
||||
case SetValueResult.Success =>
|
||||
BasicResult(true, "Custom field value set successfully.")
|
||||
BasicResult(success = true, "Custom field value set successfully.")
|
||||
}
|
||||
|
||||
def basicResult(cr: JobCancelResult): BasicResult =
|
||||
cr match {
|
||||
case JobCancelResult.JobNotFound => BasicResult(false, "Job not found")
|
||||
case JobCancelResult.JobNotFound => BasicResult(success = false, "Job not found")
|
||||
case JobCancelResult.CancelRequested =>
|
||||
BasicResult(true, "Cancel was requested at the job executor")
|
||||
BasicResult(success = true, "Cancel was requested at the job executor")
|
||||
case JobCancelResult.Removed =>
|
||||
BasicResult(true, "The job has been removed from the queue.")
|
||||
BasicResult(success = true, "The job has been removed from the queue.")
|
||||
}
|
||||
|
||||
def idResult(ar: AddResult, id: Ident, successMsg: String): IdResult =
|
||||
ar match {
|
||||
case AddResult.Success => IdResult(true, successMsg, id)
|
||||
case AddResult.EntityExists(msg) => IdResult(false, msg, Ident.unsafe(""))
|
||||
case AddResult.Success => IdResult(success = true, successMsg, id)
|
||||
case AddResult.EntityExists(msg) => IdResult(success = false, msg, Ident.unsafe(""))
|
||||
case AddResult.Failure(ex) =>
|
||||
IdResult(false, s"Internal error: ${ex.getMessage}", Ident.unsafe(""))
|
||||
IdResult(success = false, s"Internal error: ${ex.getMessage}", Ident.unsafe(""))
|
||||
}
|
||||
|
||||
def basicResult(ar: AddResult, successMsg: String): BasicResult =
|
||||
ar match {
|
||||
case AddResult.Success => BasicResult(true, successMsg)
|
||||
case AddResult.EntityExists(msg) => BasicResult(false, msg)
|
||||
case AddResult.Success => BasicResult(success = true, successMsg)
|
||||
case AddResult.EntityExists(msg) => BasicResult(success = false, msg)
|
||||
case AddResult.Failure(ex) =>
|
||||
BasicResult(false, s"Internal error: ${ex.getMessage}")
|
||||
BasicResult(success = false, s"Internal error: ${ex.getMessage}")
|
||||
}
|
||||
|
||||
def basicResult(ar: UpdateResult, successMsg: String): BasicResult =
|
||||
ar match {
|
||||
case UpdateResult.Success => BasicResult(true, successMsg)
|
||||
case UpdateResult.NotFound => BasicResult(false, "Not found")
|
||||
case UpdateResult.Success => BasicResult(success = true, successMsg)
|
||||
case UpdateResult.NotFound => BasicResult(success = false, "Not found")
|
||||
case UpdateResult.Failure(ex) =>
|
||||
BasicResult(false, s"Error: ${ex.getMessage}")
|
||||
BasicResult(success = false, s"Error: ${ex.getMessage}")
|
||||
}
|
||||
|
||||
def basicResult(ur: OUpload.UploadResult): BasicResult =
|
||||
ur match {
|
||||
case UploadResult.Success => BasicResult(true, "Files submitted.")
|
||||
case UploadResult.NoFiles => BasicResult(false, "There were no files to submit.")
|
||||
case UploadResult.NoSource => BasicResult(false, "The source id is not valid.")
|
||||
case UploadResult.NoItem => BasicResult(false, "The item could not be found.")
|
||||
case UploadResult.Success => BasicResult(success = true, "Files submitted.")
|
||||
case UploadResult.NoFiles =>
|
||||
BasicResult(success = false, "There were no files to submit.")
|
||||
case UploadResult.NoSource =>
|
||||
BasicResult(success = false, "The source id is not valid.")
|
||||
case UploadResult.NoItem =>
|
||||
BasicResult(success = false, "The item could not be found.")
|
||||
case UploadResult.NoCollective =>
|
||||
BasicResult(false, "The collective could not be found.")
|
||||
BasicResult(success = false, "The collective could not be found.")
|
||||
case UploadResult.StoreFailure(_) =>
|
||||
BasicResult(
|
||||
false,
|
||||
success = false,
|
||||
"There were errors storing a file! See the server logs for details."
|
||||
)
|
||||
}
|
||||
|
||||
def basicResult(cr: PassChangeResult): BasicResult =
|
||||
cr match {
|
||||
case PassChangeResult.Success => BasicResult(true, "Password changed.")
|
||||
case PassChangeResult.Success => BasicResult(success = true, "Password changed.")
|
||||
case PassChangeResult.UpdateFailed =>
|
||||
BasicResult(false, "The database update failed.")
|
||||
BasicResult(success = false, "The database update failed.")
|
||||
case PassChangeResult.PasswordMismatch =>
|
||||
BasicResult(false, "The current password is incorrect.")
|
||||
case PassChangeResult.UserNotFound => BasicResult(false, "User not found.")
|
||||
BasicResult(success = false, "The current password is incorrect.")
|
||||
case PassChangeResult.UserNotFound =>
|
||||
BasicResult(success = false, "User not found.")
|
||||
case PassChangeResult.InvalidSource(source) =>
|
||||
BasicResult(
|
||||
false,
|
||||
success = false,
|
||||
s"User has invalid soure: $source. Passwords are managed elsewhere."
|
||||
)
|
||||
}
|
||||
|
||||
def basicResult(e: Either[Throwable, _], successMsg: String): BasicResult =
|
||||
e match {
|
||||
case Right(_) => BasicResult(true, successMsg)
|
||||
case Left(ex) => BasicResult(false, ex.getMessage)
|
||||
case Right(_) => BasicResult(success = true, successMsg)
|
||||
case Left(ex) => BasicResult(success = false, ex.getMessage)
|
||||
}
|
||||
|
||||
// MIME Type
|
||||
|
@ -38,7 +38,7 @@ object BinaryUtil {
|
||||
if (matches) withResponseHeaders(dsl, NotModified())(data)
|
||||
else makeByteResp(dsl)(data)
|
||||
}
|
||||
.getOrElse(NotFound(BasicResult(false, "Not found")))
|
||||
.getOrElse(NotFound(BasicResult(success = false, "Not found")))
|
||||
}
|
||||
|
||||
def respondHead[F[_]: Async](dsl: Http4sDsl[F])(
|
||||
@ -48,7 +48,7 @@ object BinaryUtil {
|
||||
|
||||
fileData
|
||||
.map(data => withResponseHeaders(dsl, Ok())(data))
|
||||
.getOrElse(NotFound(BasicResult(false, "Not found")))
|
||||
.getOrElse(NotFound(BasicResult(success = false, "Not found")))
|
||||
}
|
||||
|
||||
def respondPreview[F[_]: Async](dsl: Http4sDsl[F], req: Request[F])(
|
||||
@ -56,7 +56,7 @@ object BinaryUtil {
|
||||
): F[Response[F]] = {
|
||||
import dsl._
|
||||
def notFound =
|
||||
NotFound(BasicResult(false, "Not found"))
|
||||
NotFound(BasicResult(success = false, "Not found"))
|
||||
|
||||
QP.WithFallback.unapply(req.multiParams) match {
|
||||
case Some(bool) =>
|
||||
@ -75,7 +75,7 @@ object BinaryUtil {
|
||||
)
|
||||
|
||||
case None =>
|
||||
BadRequest(BasicResult(false, "Invalid query parameter 'withFallback'"))
|
||||
BadRequest(BasicResult(success = false, "Invalid query parameter 'withFallback'"))
|
||||
}
|
||||
}
|
||||
|
||||
@ -85,7 +85,7 @@ object BinaryUtil {
|
||||
import dsl._
|
||||
fileData
|
||||
.map(data => withResponseHeaders(dsl, Ok())(data))
|
||||
.getOrElse(NotFound(BasicResult(false, "Not found")))
|
||||
.getOrElse(NotFound(BasicResult(success = false, "Not found")))
|
||||
}
|
||||
|
||||
def withResponseHeaders[F[_]: Sync](dsl: Http4sDsl[F], resp: F[Response[F]])(
|
||||
|
@ -33,10 +33,10 @@ object ThrowableResponseMapper {
|
||||
def toResponse(ex: Throwable): F[Response[F]] =
|
||||
ex match {
|
||||
case _: IllegalArgumentException =>
|
||||
BadRequest(BasicResult(false, ex.getMessage))
|
||||
BadRequest(BasicResult(success = false, ex.getMessage))
|
||||
|
||||
case _ =>
|
||||
InternalServerError(BasicResult(false, ex.getMessage))
|
||||
InternalServerError(BasicResult(success = false, ex.getMessage))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -52,7 +52,7 @@ object AddonArchiveRoutes extends AddonValidationSupport {
|
||||
case req @ POST -> Root :? Sync(sync) =>
|
||||
def create(r: Option[RAddonArchive]) =
|
||||
IdResult(
|
||||
true,
|
||||
success = true,
|
||||
r.fold("Addon submitted for installation")(r =>
|
||||
s"Addon installed: ${r.id.id}"
|
||||
),
|
||||
@ -77,7 +77,7 @@ object AddonArchiveRoutes extends AddonValidationSupport {
|
||||
case PUT -> Root / Ident(id) :? Sync(sync) =>
|
||||
def create(r: Option[AddonMeta]) =
|
||||
BasicResult(
|
||||
true,
|
||||
success = true,
|
||||
r.fold("Addon updated in background")(m =>
|
||||
s"Addon updated: ${m.nameAndVersion}"
|
||||
)
|
||||
@ -99,8 +99,8 @@ object AddonArchiveRoutes extends AddonValidationSupport {
|
||||
for {
|
||||
flag <- backend.addons.deleteAddon(token.account.collectiveId, id)
|
||||
resp <-
|
||||
if (flag) Ok(BasicResult(true, "Addon deleted"))
|
||||
else NotFound(BasicResult(false, "Addon not found"))
|
||||
if (flag) Ok(BasicResult(success = true, "Addon deleted"))
|
||||
else NotFound(BasicResult(success = false, "Addon not found"))
|
||||
} yield resp
|
||||
}
|
||||
}
|
||||
@ -112,11 +112,11 @@ object AddonArchiveRoutes extends AddonValidationSupport {
|
||||
import dsl._
|
||||
|
||||
def failWith(msg: String): F[Response[F]] =
|
||||
Ok(IdResult(false, msg, Ident.unsafe("")))
|
||||
Ok(IdResult(success = false, msg, Ident.unsafe("")))
|
||||
|
||||
e match {
|
||||
case AddonValidationError.AddonNotFound =>
|
||||
NotFound(BasicResult(false, "Addon not found."))
|
||||
NotFound(BasicResult(success = false, "Addon not found."))
|
||||
|
||||
case _ =>
|
||||
failWith(validationErrorToMessage(e))
|
||||
|
@ -35,5 +35,5 @@ object AddonRoutes {
|
||||
"run" -> AddonRunRoutes(backend, token)
|
||||
)
|
||||
else
|
||||
Responses.notFoundRoute(BasicResult(false, "Addons disabled"))
|
||||
Responses.notFoundRoute(BasicResult(success = false, "Addons disabled"))
|
||||
}
|
||||
|
@ -43,8 +43,8 @@ object AddonRunConfigRoutes {
|
||||
.map(_.leftMap(_.message))
|
||||
)
|
||||
resp <- res.fold(
|
||||
msg => Ok(BasicResult(false, msg)),
|
||||
id => Ok(IdResult(true, s"Addon run config added", id))
|
||||
msg => Ok(BasicResult(success = false, msg)),
|
||||
id => Ok(IdResult(success = true, s"Addon run config added", id))
|
||||
)
|
||||
} yield resp
|
||||
|
||||
@ -58,8 +58,8 @@ object AddonRunConfigRoutes {
|
||||
.map(_.leftMap(_.message))
|
||||
)
|
||||
resp <- res.fold(
|
||||
msg => Ok(BasicResult(false, msg)),
|
||||
id => Ok(IdResult(true, s"Addon run config updated", id))
|
||||
msg => Ok(BasicResult(success = false, msg)),
|
||||
id => Ok(IdResult(success = true, s"Addon run config updated", id))
|
||||
)
|
||||
} yield resp
|
||||
|
||||
@ -67,8 +67,8 @@ object AddonRunConfigRoutes {
|
||||
for {
|
||||
flag <- backend.addons.deleteAddonRunConfig(token.account.collectiveId, id)
|
||||
resp <-
|
||||
if (flag) Ok(BasicResult(true, "Addon task deleted"))
|
||||
else NotFound(BasicResult(false, "Addon task not found"))
|
||||
if (flag) Ok(BasicResult(success = true, "Addon task deleted"))
|
||||
else NotFound(BasicResult(success = false, "Addon task not found"))
|
||||
} yield resp
|
||||
}
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ object AddonRunRoutes {
|
||||
input.addonRunConfigIds.toSet,
|
||||
UserTaskScope(token.account)
|
||||
)
|
||||
resp <- Ok(BasicResult(true, "Job for running addons submitted."))
|
||||
resp <- Ok(BasicResult(success = true, "Job for running addons submitted."))
|
||||
} yield resp
|
||||
}
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ object AttachmentRoutes {
|
||||
resp <-
|
||||
fileData
|
||||
.map(data => withResponseHeaders(Ok())(data))
|
||||
.getOrElse(NotFound(BasicResult(false, "Not found")))
|
||||
.getOrElse(NotFound(BasicResult(success = false, "Not found")))
|
||||
} yield resp
|
||||
|
||||
case req @ GET -> Root / Ident(id) / "original" =>
|
||||
@ -83,7 +83,7 @@ object AttachmentRoutes {
|
||||
if (matches) withResponseHeaders(NotModified())(data)
|
||||
else makeByteResp(data)
|
||||
}
|
||||
.getOrElse(NotFound(BasicResult(false, "Not found")))
|
||||
.getOrElse(NotFound(BasicResult(success = false, "Not found")))
|
||||
} yield resp
|
||||
|
||||
case HEAD -> Root / Ident(id) / "archive" =>
|
||||
@ -93,7 +93,7 @@ object AttachmentRoutes {
|
||||
resp <-
|
||||
fileData
|
||||
.map(data => withResponseHeaders(Ok())(data))
|
||||
.getOrElse(NotFound(BasicResult(false, "Not found")))
|
||||
.getOrElse(NotFound(BasicResult(success = false, "Not found")))
|
||||
} yield resp
|
||||
|
||||
case req @ GET -> Root / Ident(id) / "archive" =>
|
||||
@ -108,7 +108,7 @@ object AttachmentRoutes {
|
||||
if (matches) withResponseHeaders(NotModified())(data)
|
||||
else makeByteResp(data)
|
||||
}
|
||||
.getOrElse(NotFound(BasicResult(false, "Not found")))
|
||||
.getOrElse(NotFound(BasicResult(success = false, "Not found")))
|
||||
} yield resp
|
||||
|
||||
case req @ GET -> Root / Ident(id) / "preview" =>
|
||||
@ -148,7 +148,9 @@ object AttachmentRoutes {
|
||||
for {
|
||||
rm <- backend.itemSearch.findAttachmentMeta(id, user.account.collectiveId)
|
||||
md = rm.map(Conversions.mkAttachmentMeta)
|
||||
resp <- md.map(Ok(_)).getOrElse(NotFound(BasicResult(false, "Not found.")))
|
||||
resp <- md
|
||||
.map(Ok(_))
|
||||
.getOrElse(NotFound(BasicResult(success = false, "Not found.")))
|
||||
} yield resp
|
||||
|
||||
case req @ POST -> Root / Ident(id) / "name" =>
|
||||
@ -169,8 +171,11 @@ object AttachmentRoutes {
|
||||
backend.attachment
|
||||
.setExtractedText(user.account.collectiveId, itemId, id, newText)
|
||||
)
|
||||
resp <- OptionT.liftF(Ok(BasicResult(true, "Extracted text updated.")))
|
||||
} yield resp).getOrElseF(NotFound(BasicResult(false, "Attachment not found")))
|
||||
resp <- OptionT.liftF(
|
||||
Ok(BasicResult(success = true, "Extracted text updated."))
|
||||
)
|
||||
} yield resp)
|
||||
.getOrElseF(NotFound(BasicResult(success = false, "Attachment not found")))
|
||||
|
||||
case DELETE -> Root / Ident(id) / "extracted-text" =>
|
||||
(for {
|
||||
@ -181,7 +186,9 @@ object AttachmentRoutes {
|
||||
backend.attachment
|
||||
.setExtractedText(user.account.collectiveId, itemId, id, "".pure[F])
|
||||
)
|
||||
resp <- OptionT.liftF(Ok(BasicResult(true, "Extracted text cleared.")))
|
||||
resp <- OptionT.liftF(
|
||||
Ok(BasicResult(success = true, "Extracted text cleared."))
|
||||
)
|
||||
} yield resp).getOrElseF(NotFound())
|
||||
|
||||
case GET -> Root / Ident(id) / "extracted-text" =>
|
||||
@ -190,14 +197,15 @@ object AttachmentRoutes {
|
||||
backend.itemSearch.findAttachmentMeta(id, user.account.collectiveId)
|
||||
)
|
||||
resp <- OptionT.liftF(Ok(OptionalText(meta.content)))
|
||||
} yield resp).getOrElseF(NotFound(BasicResult(false, "Attachment not found")))
|
||||
} yield resp)
|
||||
.getOrElseF(NotFound(BasicResult(success = false, "Attachment not found")))
|
||||
|
||||
case DELETE -> Root / Ident(id) =>
|
||||
for {
|
||||
n <- backend.item.deleteAttachment(id, user.account.collectiveId)
|
||||
res =
|
||||
if (n == 0) BasicResult(false, "Attachment not found")
|
||||
else BasicResult(true, "Attachment deleted.")
|
||||
if (n == 0) BasicResult(success = false, "Attachment not found")
|
||||
else BasicResult(success = true, "Attachment deleted.")
|
||||
resp <- Ok(res)
|
||||
} yield resp
|
||||
}
|
||||
|
@ -40,9 +40,9 @@ object CalEventCheckRoutes {
|
||||
val next = ev
|
||||
.nextElapses(now.toUtcDateTime, 2)
|
||||
.map(Timestamp.atUtc)
|
||||
CalEventCheckResult(true, "Valid.", ev.some, next)
|
||||
CalEventCheckResult(success = true, "Valid.", ev.some, next)
|
||||
case Left(err) =>
|
||||
CalEventCheckResult(false, err, None, Nil)
|
||||
CalEventCheckResult(success = false, err, None, Nil)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ object ClientSettingsRoutes {
|
||||
for {
|
||||
data <- req.as[Json]
|
||||
_ <- backend.clientSettings.saveUser(clientId, user.account.userId, data)
|
||||
res <- Ok(BasicResult(true, "Settings stored"))
|
||||
res <- Ok(BasicResult(success = true, "Settings stored"))
|
||||
} yield res
|
||||
|
||||
case GET -> Root / "user" / Ident(clientId) =>
|
||||
@ -97,7 +97,7 @@ object ClientSettingsRoutes {
|
||||
user.account.collectiveId,
|
||||
data
|
||||
)
|
||||
res <- Ok(BasicResult(true, "Settings stored"))
|
||||
res <- Ok(BasicResult(success = true, "Settings stored"))
|
||||
} yield res
|
||||
|
||||
case GET -> Root / "collective" / Ident(clientId) =>
|
||||
|
@ -118,7 +118,7 @@ object CollectiveRoutes {
|
||||
case POST -> Root / "classifier" / "startonce" =>
|
||||
for {
|
||||
_ <- backend.collective.startLearnClassifier(user.account.collectiveId)
|
||||
resp <- Ok(BasicResult(true, "Task submitted"))
|
||||
resp <- Ok(BasicResult(success = true, "Task submitted"))
|
||||
} yield resp
|
||||
|
||||
case req @ POST -> Root / "emptytrash" / "startonce" =>
|
||||
@ -127,7 +127,7 @@ object CollectiveRoutes {
|
||||
_ <- backend.collective.startEmptyTrash(
|
||||
EmptyTrashArgs(user.account.collectiveId, data.minAge)
|
||||
)
|
||||
resp <- Ok(BasicResult(true, "Task submitted"))
|
||||
resp <- Ok(BasicResult(success = true, "Task submitted"))
|
||||
} yield resp
|
||||
}
|
||||
}
|
||||
|
@ -56,7 +56,7 @@ object CustomFieldRoutes {
|
||||
(for {
|
||||
field <- OptionT(backend.customFields.findById(user.account.collectiveId, id))
|
||||
res <- OptionT.liftF(Ok(convertField(field)))
|
||||
} yield res).getOrElseF(NotFound(BasicResult(false, "Not found")))
|
||||
} yield res).getOrElseF(NotFound(BasicResult(success = false, "Not found")))
|
||||
|
||||
case req @ PUT -> Root / Ident(id) =>
|
||||
for {
|
||||
|
@ -126,7 +126,7 @@ object DownloadAllRoutes {
|
||||
case DELETE -> Root / "file" / Ident(id) =>
|
||||
for {
|
||||
_ <- backend.downloadAll.deleteFile(id)
|
||||
resp <- Ok(BasicResult(true, "File deleted."))
|
||||
resp <- Ok(BasicResult(success = true, "File deleted."))
|
||||
} yield resp
|
||||
|
||||
case PUT -> Root / "cancel" / Ident(id) =>
|
||||
|
@ -118,12 +118,12 @@ object FolderRoutes {
|
||||
private def mkFolderChangeResult(r: OFolder.FolderChangeResult): BasicResult =
|
||||
r match {
|
||||
case OFolder.FolderChangeResult.Success =>
|
||||
BasicResult(true, "Successfully changed folder.")
|
||||
BasicResult(success = true, "Successfully changed folder.")
|
||||
case OFolder.FolderChangeResult.NotFound =>
|
||||
BasicResult(false, "Folder or user not found.")
|
||||
BasicResult(success = false, "Folder or user not found.")
|
||||
case OFolder.FolderChangeResult.Forbidden =>
|
||||
BasicResult(false, "Not allowed to edit folder.")
|
||||
BasicResult(success = false, "Not allowed to edit folder.")
|
||||
case OFolder.FolderChangeResult.Exists =>
|
||||
BasicResult(false, "The member already exists.")
|
||||
BasicResult(success = false, "The member already exists.")
|
||||
}
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ class ItemLinkRoutes[F[_]: Async](account: AccountInfo, backend: OItemLink[F])
|
||||
case DELETE -> Root / Ident(target) / Ident(id) =>
|
||||
for {
|
||||
_ <- backend.removeAll(account.collectiveId, target, NonEmptyList.of(id))
|
||||
resp <- Ok(BasicResult(true, "Related items removed"))
|
||||
resp <- Ok(BasicResult(success = true, "Related items removed"))
|
||||
} yield resp
|
||||
|
||||
case req @ POST -> Root / "addAll" =>
|
||||
@ -58,19 +58,21 @@ class ItemLinkRoutes[F[_]: Async](account: AccountInfo, backend: OItemLink[F])
|
||||
_ <- related
|
||||
.map(backend.removeAll(account.collectiveId, input.item, _))
|
||||
.getOrElse(
|
||||
BadRequest(BasicResult(false, "List of related items must not be empty"))
|
||||
BadRequest(
|
||||
BasicResult(success = false, "List of related items must not be empty")
|
||||
)
|
||||
)
|
||||
resp <- Ok(BasicResult(true, "Related items removed"))
|
||||
resp <- Ok(BasicResult(success = true, "Related items removed"))
|
||||
} yield resp
|
||||
}
|
||||
|
||||
private def convertResult(r: Option[LinkResult]): BasicResult =
|
||||
r match {
|
||||
case Some(LinkResult.Success) => BasicResult(true, "Related items added")
|
||||
case Some(LinkResult.Success) => BasicResult(success = true, "Related items added")
|
||||
case Some(LinkResult.LinkTargetItemError) =>
|
||||
BasicResult(false, "Items cannot be related to itself.")
|
||||
BasicResult(success = false, "Items cannot be related to itself.")
|
||||
case None =>
|
||||
BasicResult(false, "List of related items must not be empty")
|
||||
BasicResult(success = false, "List of related items must not be empty")
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -49,7 +49,7 @@ object ItemRoutes {
|
||||
resp <-
|
||||
result
|
||||
.map(r => Ok(r))
|
||||
.getOrElse(NotFound(BasicResult(false, "Not found.")))
|
||||
.getOrElse(NotFound(BasicResult(success = false, "Not found.")))
|
||||
} yield resp
|
||||
|
||||
case POST -> Root / Ident(id) / "confirm" =>
|
||||
@ -285,7 +285,7 @@ object ItemRoutes {
|
||||
|
||||
case req @ GET -> Root / Ident(id) / "preview" :? QP.WithFallback(flag) =>
|
||||
def notFound =
|
||||
NotFound(BasicResult(false, "Not found"))
|
||||
NotFound(BasicResult(success = false, "Not found"))
|
||||
for {
|
||||
preview <- backend.itemSearch.findItemPreview(id, user.account.collectiveId)
|
||||
inm = req.headers.get[`If-None-Match`].flatMap(_.tags)
|
||||
@ -309,7 +309,7 @@ object ItemRoutes {
|
||||
resp <-
|
||||
preview
|
||||
.map(data => BinaryUtil.withResponseHeaders(dsl, Ok())(data))
|
||||
.getOrElse(NotFound(BasicResult(false, "Not found")))
|
||||
.getOrElse(NotFound(BasicResult(success = false, "Not found")))
|
||||
} yield resp
|
||||
|
||||
case req @ POST -> Root / Ident(id) / "reprocess" =>
|
||||
|
@ -196,17 +196,17 @@ final class ItemSearchPart[F[_]: Async](
|
||||
Right(s)
|
||||
|
||||
case QueryParseResult.ParseFailed(err) =>
|
||||
BadRequest(BasicResult(false, s"Invalid query: $err")).asLeft
|
||||
BadRequest(BasicResult(success = false, s"Invalid query: $err")).asLeft
|
||||
|
||||
case QueryParseResult.FulltextMismatch(Result.TooMany) =>
|
||||
BadRequest(
|
||||
BasicResult(false, "Only one fulltext search expression is allowed.")
|
||||
BasicResult(success = false, "Only one fulltext search expression is allowed.")
|
||||
).asLeft
|
||||
|
||||
case QueryParseResult.FulltextMismatch(Result.UnsupportedPosition) =>
|
||||
BadRequest(
|
||||
BasicResult(
|
||||
false,
|
||||
success = false,
|
||||
"A fulltext search may only appear in the root and expression."
|
||||
)
|
||||
).asLeft
|
||||
|
@ -41,7 +41,9 @@ object LoginRoutes {
|
||||
makeResponse(dsl, cfg, req, result, token.account.asString)
|
||||
)
|
||||
case Left(err) =>
|
||||
BadRequest(BasicResult(false, s"Invalid authentication token: $err"))
|
||||
BadRequest(
|
||||
BasicResult(success = false, s"Invalid authentication token: $err")
|
||||
)
|
||||
}
|
||||
} yield resp
|
||||
|
||||
@ -97,7 +99,7 @@ object LoginRoutes {
|
||||
AuthResult(
|
||||
token.account.collective.id,
|
||||
token.account.login.id,
|
||||
true,
|
||||
success = true,
|
||||
"Login successful",
|
||||
Some(cd.asString),
|
||||
cfg.auth.sessionValid.millis,
|
||||
@ -112,7 +114,17 @@ object LoginRoutes {
|
||||
|
||||
} yield resp
|
||||
case _ =>
|
||||
Ok(AuthResult("", account, false, "Login failed.", None, 0L, false))
|
||||
Ok(
|
||||
AuthResult(
|
||||
"",
|
||||
account,
|
||||
success = false,
|
||||
"Login failed.",
|
||||
None,
|
||||
0L,
|
||||
requireSecondFactor = false
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -36,7 +36,7 @@ object MailSendRoutes {
|
||||
backend.mail.sendMail(user.account.userId, user.account.collectiveId, name, m)
|
||||
)
|
||||
resp <- res.fold(
|
||||
err => Ok(BasicResult(false, s"Invalid mail data: $err")),
|
||||
err => Ok(BasicResult(success = false, s"Invalid mail data: $err")),
|
||||
res => Ok(convertOut(res))
|
||||
)
|
||||
} yield resp
|
||||
@ -56,15 +56,15 @@ object MailSendRoutes {
|
||||
def convertOut(res: SendResult): BasicResult =
|
||||
res match {
|
||||
case SendResult.Success(_) =>
|
||||
BasicResult(true, "Mail sent.")
|
||||
BasicResult(success = true, "Mail sent.")
|
||||
case SendResult.SendFailure(ex) =>
|
||||
BasicResult(false, s"Mail sending failed: ${ex.getMessage}")
|
||||
BasicResult(success = false, s"Mail sending failed: ${ex.getMessage}")
|
||||
case SendResult.StoreFailure(ex) =>
|
||||
BasicResult(
|
||||
false,
|
||||
success = false,
|
||||
s"Mail was sent, but could not be store to database: ${ex.getMessage}"
|
||||
)
|
||||
case SendResult.NotFound =>
|
||||
BasicResult(false, s"There was no mail-connection or item found.")
|
||||
BasicResult(success = false, s"There was no mail-connection or item found.")
|
||||
}
|
||||
}
|
||||
|
@ -69,7 +69,7 @@ object MailSettingsRoutes {
|
||||
resp <- OptionT.liftF(
|
||||
Ok(
|
||||
up.fold(
|
||||
err => BasicResult(false, err),
|
||||
err => BasicResult(success = false, err),
|
||||
ar => Conversions.basicResult(ar, "Mail settings stored.")
|
||||
)
|
||||
)
|
||||
@ -86,7 +86,7 @@ object MailSettingsRoutes {
|
||||
resp <- OptionT.liftF(
|
||||
Ok(
|
||||
up.fold(
|
||||
err => BasicResult(false, err),
|
||||
err => BasicResult(success = false, err),
|
||||
ar => Conversions.basicResult(ar, "Mail settings stored.")
|
||||
)
|
||||
)
|
||||
@ -105,10 +105,10 @@ object MailSettingsRoutes {
|
||||
resp <- OptionT.liftF(
|
||||
Ok(
|
||||
up.fold(
|
||||
err => BasicResult(false, err),
|
||||
err => BasicResult(success = false, err),
|
||||
n =>
|
||||
if (n > 0) BasicResult(true, "Mail settings stored.")
|
||||
else BasicResult(false, "Mail settings could not be saved")
|
||||
if (n > 0) BasicResult(success = true, "Mail settings stored.")
|
||||
else BasicResult(success = false, "Mail settings could not be saved")
|
||||
)
|
||||
)
|
||||
)
|
||||
@ -126,10 +126,10 @@ object MailSettingsRoutes {
|
||||
resp <- OptionT.liftF(
|
||||
Ok(
|
||||
up.fold(
|
||||
err => BasicResult(false, err),
|
||||
err => BasicResult(success = false, err),
|
||||
n =>
|
||||
if (n > 0) BasicResult(true, "Mail settings stored.")
|
||||
else BasicResult(false, "Mail settings could not be saved")
|
||||
if (n > 0) BasicResult(success = true, "Mail settings stored.")
|
||||
else BasicResult(success = false, "Mail settings could not be saved")
|
||||
)
|
||||
)
|
||||
)
|
||||
@ -139,8 +139,8 @@ object MailSettingsRoutes {
|
||||
for {
|
||||
n <- backend.mail.deleteSmtpSettings(user.account.userId, name)
|
||||
resp <- Ok(
|
||||
if (n > 0) BasicResult(true, "Mail settings removed")
|
||||
else BasicResult(false, "Mail settings could not be removed")
|
||||
if (n > 0) BasicResult(success = true, "Mail settings removed")
|
||||
else BasicResult(success = false, "Mail settings could not be removed")
|
||||
)
|
||||
} yield resp
|
||||
|
||||
@ -148,8 +148,8 @@ object MailSettingsRoutes {
|
||||
for {
|
||||
n <- backend.mail.deleteImapSettings(user.account.userId, name)
|
||||
resp <- Ok(
|
||||
if (n > 0) BasicResult(true, "Mail settings removed")
|
||||
else BasicResult(false, "Mail settings could not be removed")
|
||||
if (n > 0) BasicResult(success = true, "Mail settings removed")
|
||||
else BasicResult(success = false, "Mail settings could not be removed")
|
||||
)
|
||||
} yield resp
|
||||
}
|
||||
|
@ -72,7 +72,7 @@ object NotificationRoutes extends NonEmptyListSupport {
|
||||
.createChannel(c, user.account.userId)
|
||||
.map(res => Conversions.basicResult(res, "Channel created"))
|
||||
}
|
||||
.foldF(ex => BadRequest(BasicResult(false, ex.getMessage)), Ok(_))
|
||||
.foldF(ex => BadRequest(BasicResult(success = false, ex.getMessage)), Ok(_))
|
||||
} yield resp
|
||||
|
||||
case req @ PUT -> Root =>
|
||||
@ -86,7 +86,7 @@ object NotificationRoutes extends NonEmptyListSupport {
|
||||
.updateChannel(c, user.account.userId)
|
||||
.map(res => Conversions.basicResult(res, "Channel created"))
|
||||
}
|
||||
.foldF(ex => BadRequest(BasicResult(false, ex.getMessage)), Ok(_))
|
||||
.foldF(ex => BadRequest(BasicResult(success = false, ex.getMessage)), Ok(_))
|
||||
} yield resp
|
||||
}
|
||||
}
|
||||
@ -173,7 +173,7 @@ object NotificationRoutes extends NonEmptyListSupport {
|
||||
resp <- data.asJsonWithMessage match {
|
||||
case Right(m) => Ok(m)
|
||||
case Left(err) =>
|
||||
BadRequest(BasicResult(false, s"Unable to render message: $err"))
|
||||
BadRequest(BasicResult(success = false, s"Unable to render message: $err"))
|
||||
}
|
||||
} yield resp
|
||||
}
|
||||
|
@ -86,7 +86,8 @@ object NotifyDueItemsRoutes extends MailAddressCodec with NonEmptyListSupport {
|
||||
for {
|
||||
data <- req.as[PeriodicDueItemsSettings]
|
||||
resp <-
|
||||
if (data.id.isEmpty) Ok(BasicResult(false, "Empty id is not allowed"))
|
||||
if (data.id.isEmpty)
|
||||
Ok(BasicResult(success = false, "Empty id is not allowed"))
|
||||
else run(data)
|
||||
} yield resp
|
||||
|
||||
|
@ -87,7 +87,8 @@ object PeriodicQueryRoutes extends MailAddressCodec with NonEmptyListSupport {
|
||||
for {
|
||||
data <- req.as[PeriodicQuerySettings]
|
||||
resp <-
|
||||
if (data.id.isEmpty) Ok(BasicResult(false, "Empty id is not allowed"))
|
||||
if (data.id.isEmpty)
|
||||
Ok(BasicResult(success = false, "Empty id is not allowed"))
|
||||
else run(data)
|
||||
} yield resp
|
||||
|
||||
|
@ -48,26 +48,26 @@ object RegisterRoutes {
|
||||
def convert(r: NewInviteResult): InviteResult =
|
||||
r match {
|
||||
case NewInviteResult.Success(id) =>
|
||||
InviteResult(true, "New invitation created.", Some(id))
|
||||
InviteResult(success = true, "New invitation created.", Some(id))
|
||||
case NewInviteResult.InvitationDisabled =>
|
||||
InviteResult(false, "Signing up is not enabled for invitations.", None)
|
||||
InviteResult(success = false, "Signing up is not enabled for invitations.", None)
|
||||
case NewInviteResult.PasswordMismatch =>
|
||||
InviteResult(false, "Password is invalid.", None)
|
||||
InviteResult(success = false, "Password is invalid.", None)
|
||||
}
|
||||
|
||||
def convert(r: SignupResult): BasicResult =
|
||||
r match {
|
||||
case SignupResult.CollectiveExists =>
|
||||
BasicResult(false, "A collective with this name already exists.")
|
||||
BasicResult(success = false, "A collective with this name already exists.")
|
||||
case SignupResult.InvalidInvitationKey =>
|
||||
BasicResult(false, "Invalid invitation key.")
|
||||
BasicResult(success = false, "Invalid invitation key.")
|
||||
case SignupResult.SignupClosed =>
|
||||
BasicResult(false, "Sorry, registration is closed.")
|
||||
BasicResult(success = false, "Sorry, registration is closed.")
|
||||
case SignupResult.Failure(ex) =>
|
||||
logger.error(ex)("Error signing up")
|
||||
BasicResult(false, s"Internal error: ${ex.getMessage}")
|
||||
BasicResult(success = false, s"Internal error: ${ex.getMessage}")
|
||||
case SignupResult.Success =>
|
||||
BasicResult(true, "Signup successful")
|
||||
BasicResult(success = true, "Signup successful")
|
||||
}
|
||||
|
||||
def convert(r: Registration): RegisterData =
|
||||
|
@ -82,7 +82,8 @@ object ScanMailboxRoutes {
|
||||
for {
|
||||
data <- req.as[ScanMailboxSettings]
|
||||
resp <-
|
||||
if (data.id.isEmpty) Ok(BasicResult(false, "Empty id is not allowed"))
|
||||
if (data.id.isEmpty)
|
||||
Ok(BasicResult(success = false, "Empty id is not allowed"))
|
||||
else run(data)
|
||||
} yield resp
|
||||
|
||||
|
@ -34,7 +34,7 @@ object ShareItemRoutes {
|
||||
resp <-
|
||||
result
|
||||
.map(r => Ok(r))
|
||||
.getOrElse(NotFound(BasicResult(false, "Not found.")))
|
||||
.getOrElse(NotFound(BasicResult(success = false, "Not found.")))
|
||||
} yield resp
|
||||
}
|
||||
}
|
||||
|
@ -81,7 +81,7 @@ object ShareRoutes {
|
||||
.sendMail(user.account.collectiveId, user.account.userId, name, m)
|
||||
)
|
||||
resp <- res.fold(
|
||||
err => Ok(BasicResult(false, s"Invalid mail data: $err")),
|
||||
err => Ok(BasicResult(success = false, s"Invalid mail data: $err")),
|
||||
res => Ok(convertOut(res))
|
||||
)
|
||||
} yield resp
|
||||
@ -100,14 +100,46 @@ object ShareRoutes {
|
||||
resp <- res match {
|
||||
case VerifyResult.Success(token, name) =>
|
||||
val cd = ShareCookieData(token)
|
||||
Ok(ShareVerifyResult(true, token.asString, false, "Success", name))
|
||||
Ok(
|
||||
ShareVerifyResult(
|
||||
success = true,
|
||||
token.asString,
|
||||
passwordRequired = false,
|
||||
"Success",
|
||||
name
|
||||
)
|
||||
)
|
||||
.map(cd.addCookie(ClientRequestInfo.getBaseUrl(cfg, req)))
|
||||
case VerifyResult.PasswordMismatch =>
|
||||
Ok(ShareVerifyResult(false, "", true, "Failed", None))
|
||||
Ok(
|
||||
ShareVerifyResult(
|
||||
success = false,
|
||||
"",
|
||||
passwordRequired = true,
|
||||
"Failed",
|
||||
None
|
||||
)
|
||||
)
|
||||
case VerifyResult.NotFound =>
|
||||
Ok(ShareVerifyResult(false, "", false, "Failed", None))
|
||||
Ok(
|
||||
ShareVerifyResult(
|
||||
success = false,
|
||||
"",
|
||||
passwordRequired = false,
|
||||
"Failed",
|
||||
None
|
||||
)
|
||||
)
|
||||
case VerifyResult.InvalidToken =>
|
||||
Ok(ShareVerifyResult(false, "", false, "Failed", None))
|
||||
Ok(
|
||||
ShareVerifyResult(
|
||||
success = false,
|
||||
"",
|
||||
passwordRequired = false,
|
||||
"Failed",
|
||||
None
|
||||
)
|
||||
)
|
||||
}
|
||||
} yield resp
|
||||
}
|
||||
@ -125,18 +157,18 @@ object ShareRoutes {
|
||||
|
||||
def mkIdResult(r: OShare.ChangeResult, msg: => String): IdResult =
|
||||
r match {
|
||||
case OShare.ChangeResult.Success(id) => IdResult(true, msg, id)
|
||||
case OShare.ChangeResult.Success(id) => IdResult(success = true, msg, id)
|
||||
case OShare.ChangeResult.PublishUntilInPast =>
|
||||
IdResult(false, "Until date must not be in the past", Ident.unsafe(""))
|
||||
IdResult(success = false, "Until date must not be in the past", Ident.unsafe(""))
|
||||
case OShare.ChangeResult.NotFound =>
|
||||
IdResult(
|
||||
false,
|
||||
success = false,
|
||||
"Share not found or not owner. Only the owner can update a share.",
|
||||
Ident.unsafe("")
|
||||
)
|
||||
case OShare.ChangeResult.QueryWithFulltext =>
|
||||
IdResult(
|
||||
false,
|
||||
success = false,
|
||||
"Sorry, shares with fulltext queries are currently not supported.",
|
||||
Ident.unsafe("")
|
||||
)
|
||||
@ -144,17 +176,17 @@ object ShareRoutes {
|
||||
|
||||
def mkBasicResult(r: OShare.ChangeResult, msg: => String): BasicResult =
|
||||
r match {
|
||||
case OShare.ChangeResult.Success(_) => BasicResult(true, msg)
|
||||
case OShare.ChangeResult.Success(_) => BasicResult(success = true, msg)
|
||||
case OShare.ChangeResult.PublishUntilInPast =>
|
||||
BasicResult(false, "Until date must not be in the past")
|
||||
BasicResult(success = false, "Until date must not be in the past")
|
||||
case OShare.ChangeResult.NotFound =>
|
||||
BasicResult(
|
||||
false,
|
||||
success = false,
|
||||
"Share not found or not owner. Only the owner can update a share."
|
||||
)
|
||||
case OShare.ChangeResult.QueryWithFulltext =>
|
||||
BasicResult(
|
||||
false,
|
||||
success = false,
|
||||
"Sorry, shares with fulltext queries are currently not supported."
|
||||
)
|
||||
}
|
||||
@ -184,10 +216,10 @@ object ShareRoutes {
|
||||
def convertOut(res: SendResult): BasicResult =
|
||||
res match {
|
||||
case SendResult.Success(_) =>
|
||||
BasicResult(true, "Mail sent.")
|
||||
BasicResult(success = true, "Mail sent.")
|
||||
case SendResult.SendFailure(ex) =>
|
||||
BasicResult(false, s"Mail sending failed: ${ex.getMessage}")
|
||||
BasicResult(success = false, s"Mail sending failed: ${ex.getMessage}")
|
||||
case SendResult.NotFound =>
|
||||
BasicResult(false, s"There was no mail-connection or item found.")
|
||||
BasicResult(success = false, s"There was no mail-connection or item found.")
|
||||
}
|
||||
}
|
||||
|
@ -36,7 +36,10 @@ object TotpRoutes {
|
||||
for {
|
||||
result <- backend.totp.state(user.account)
|
||||
resp <- Ok(
|
||||
result.fold(en => OtpState(true, en.created.some), _ => OtpState(false, None))
|
||||
result.fold(
|
||||
en => OtpState(enabled = true, en.created.some),
|
||||
_ => OtpState(enabled = false, None)
|
||||
)
|
||||
)
|
||||
} yield resp
|
||||
case POST -> Root / "init" =>
|
||||
@ -44,11 +47,13 @@ object TotpRoutes {
|
||||
result <- backend.totp.initialize(user.account)
|
||||
resp <- result match {
|
||||
case OTotp.InitResult.AlreadyExists =>
|
||||
UnprocessableEntity(BasicResult(false, "A totp setup already exists!"))
|
||||
UnprocessableEntity(
|
||||
BasicResult(success = false, "A totp setup already exists!")
|
||||
)
|
||||
case OTotp.InitResult.NotFound =>
|
||||
NotFound(BasicResult(false, "User not found"))
|
||||
NotFound(BasicResult(success = false, "User not found"))
|
||||
case OTotp.InitResult.Failed(ex) =>
|
||||
InternalServerError(BasicResult(false, ex.getMessage))
|
||||
InternalServerError(BasicResult(success = false, ex.getMessage))
|
||||
case s @ OTotp.InitResult.Success(_, key) =>
|
||||
val issuer = cfg.appName
|
||||
val uri = s.authenticatorUrl(issuer)
|
||||
@ -62,9 +67,9 @@ object TotpRoutes {
|
||||
result <- backend.totp.confirmInit(user.account, OnetimePassword(data.otp.pass))
|
||||
resp <- result match {
|
||||
case OTotp.ConfirmResult.Success =>
|
||||
Ok(BasicResult(true, "TOTP setup successful."))
|
||||
Ok(BasicResult(success = true, "TOTP setup successful."))
|
||||
case OTotp.ConfirmResult.Failed =>
|
||||
Ok(BasicResult(false, "TOTP setup failed!"))
|
||||
Ok(BasicResult(success = false, "TOTP setup failed!"))
|
||||
}
|
||||
} yield resp
|
||||
|
||||
|
@ -97,7 +97,7 @@ object UserRoutes {
|
||||
)
|
||||
|
||||
case None =>
|
||||
NotFound(BasicResult(false, s"User '${username.id}' not found"))
|
||||
NotFound(BasicResult(success = false, s"User '${username.id}' not found"))
|
||||
}
|
||||
} yield resp
|
||||
}
|
||||
@ -119,16 +119,16 @@ object UserRoutes {
|
||||
)
|
||||
resp <- Ok(result match {
|
||||
case OCollective.PassResetResult.Success(np) =>
|
||||
ResetPasswordResult(true, np, "Password updated")
|
||||
ResetPasswordResult(success = true, np, "Password updated")
|
||||
case OCollective.PassResetResult.NotFound =>
|
||||
ResetPasswordResult(
|
||||
false,
|
||||
success = false,
|
||||
Password(""),
|
||||
"Password update failed. User not found."
|
||||
)
|
||||
case OCollective.PassResetResult.InvalidSource(source) =>
|
||||
ResetPasswordResult(
|
||||
false,
|
||||
success = false,
|
||||
Password(""),
|
||||
s"Password update failed. User has unexpected source: $source. Passwords are managed externally."
|
||||
)
|
||||
|
Reference in New Issue
Block a user