Update scalafmt settings

This commit is contained in:
eikek
2021-09-22 17:23:24 +02:00
parent c37f1d7c31
commit 9013f2de5b
277 changed files with 1579 additions and 1615 deletions

View File

@ -56,8 +56,8 @@ object Config {
case class AllowedIps(enabled: Boolean, ips: Set[String]) {
def containsAddress(ipa: IpAddress): Boolean = {
val inet = ipa.toInetAddress
val ip = inet.getHostAddress
val inet = ipa.toInetAddress
val ip = inet.getHostAddress
lazy val ipParts = ip.split('.')
def checkSingle(pattern: String): Boolean =

View File

@ -39,7 +39,7 @@ object RestServer {
.create[F](cfg, pools.connectEC, pools.httpClientEC)
httpClient <- BlazeClientBuilder[F](pools.httpClientEC).resource
httpApp = Router(
"/api/info" -> routes.InfoRoutes(),
"/api/info" -> routes.InfoRoutes(),
"/api/v1/open/" -> openRoutes(cfg, httpClient, restApp),
"/api/v1/sec/" -> Authenticate(restApp.backend.login, cfg.auth) { token =>
securedRoutes(cfg, restApp, token)
@ -47,11 +47,11 @@ object RestServer {
"/api/v1/admin" -> AdminRoutes(cfg.adminEndpoint) {
adminRoutes(cfg, restApp)
},
"/api/doc" -> templates.doc,
"/api/doc" -> templates.doc,
"/app/assets" -> EnvMiddleware(WebjarRoutes.appRoutes[F]),
"/app" -> EnvMiddleware(templates.app),
"/sw.js" -> EnvMiddleware(templates.serviceWorker),
"/" -> redirectTo("/app")
"/app" -> EnvMiddleware(templates.app),
"/sw.js" -> EnvMiddleware(templates.serviceWorker),
"/" -> redirectTo("/app")
).orNotFound
finalHttpApp = Logger.httpApp(logHeaders = false, logBody = false)(httpApp)
@ -75,31 +75,31 @@ object RestServer {
token: AuthToken
): HttpRoutes[F] =
Router(
"auth" -> LoginRoutes.session(restApp.backend.login, cfg, token),
"tag" -> TagRoutes(restApp.backend, token),
"equipment" -> EquipmentRoutes(restApp.backend, token),
"organization" -> OrganizationRoutes(restApp.backend, token),
"person" -> PersonRoutes(restApp.backend, token),
"source" -> SourceRoutes(restApp.backend, token),
"user/otp" -> TotpRoutes(restApp.backend, cfg, token),
"user" -> UserRoutes(restApp.backend, token),
"collective" -> CollectiveRoutes(restApp.backend, token),
"queue" -> JobQueueRoutes(restApp.backend, token),
"item" -> ItemRoutes(cfg, restApp.backend, token),
"items" -> ItemMultiRoutes(restApp.backend, token),
"attachment" -> AttachmentRoutes(restApp.backend, token),
"attachments" -> AttachmentMultiRoutes(restApp.backend, token),
"upload" -> UploadRoutes.secured(restApp.backend, cfg, token),
"checkfile" -> CheckFileRoutes.secured(restApp.backend, token),
"email/send" -> MailSendRoutes(restApp.backend, token),
"email/settings" -> MailSettingsRoutes(restApp.backend, token),
"email/sent" -> SentMailRoutes(restApp.backend, token),
"auth" -> LoginRoutes.session(restApp.backend.login, cfg, token),
"tag" -> TagRoutes(restApp.backend, token),
"equipment" -> EquipmentRoutes(restApp.backend, token),
"organization" -> OrganizationRoutes(restApp.backend, token),
"person" -> PersonRoutes(restApp.backend, token),
"source" -> SourceRoutes(restApp.backend, token),
"user/otp" -> TotpRoutes(restApp.backend, cfg, token),
"user" -> UserRoutes(restApp.backend, token),
"collective" -> CollectiveRoutes(restApp.backend, token),
"queue" -> JobQueueRoutes(restApp.backend, token),
"item" -> ItemRoutes(cfg, restApp.backend, token),
"items" -> ItemMultiRoutes(restApp.backend, token),
"attachment" -> AttachmentRoutes(restApp.backend, token),
"attachments" -> AttachmentMultiRoutes(restApp.backend, token),
"upload" -> UploadRoutes.secured(restApp.backend, cfg, token),
"checkfile" -> CheckFileRoutes.secured(restApp.backend, token),
"email/send" -> MailSendRoutes(restApp.backend, token),
"email/settings" -> MailSettingsRoutes(restApp.backend, token),
"email/sent" -> SentMailRoutes(restApp.backend, token),
"usertask/notifydueitems" -> NotifyDueItemsRoutes(cfg, restApp.backend, token),
"usertask/scanmailbox" -> ScanMailboxRoutes(restApp.backend, token),
"calevent/check" -> CalEventCheckRoutes(),
"fts" -> FullTextIndexRoutes.secured(cfg, restApp.backend, token),
"folder" -> FolderRoutes(restApp.backend, token),
"customfield" -> CustomFieldRoutes(restApp.backend, token),
"usertask/scanmailbox" -> ScanMailboxRoutes(restApp.backend, token),
"calevent/check" -> CalEventCheckRoutes(),
"fts" -> FullTextIndexRoutes.secured(cfg, restApp.backend, token),
"folder" -> FolderRoutes(restApp.backend, token),
"customfield" -> CustomFieldRoutes(restApp.backend, token),
"clientSettings" -> ClientSettingsRoutes(restApp.backend, token)
)
@ -115,19 +115,19 @@ object RestServer {
OpenId.codeFlowConfig(cfg),
client
),
"auth" -> LoginRoutes.login(restApp.backend.login, cfg),
"signup" -> RegisterRoutes(restApp.backend, cfg),
"upload" -> UploadRoutes.open(restApp.backend, cfg),
"checkfile" -> CheckFileRoutes.open(restApp.backend),
"auth" -> LoginRoutes.login(restApp.backend.login, cfg),
"signup" -> RegisterRoutes(restApp.backend, cfg),
"upload" -> UploadRoutes.open(restApp.backend, cfg),
"checkfile" -> CheckFileRoutes.open(restApp.backend),
"integration" -> IntegrationEndpointRoutes.open(restApp.backend, cfg)
)
def adminRoutes[F[_]: Async](cfg: Config, restApp: RestApp[F]): HttpRoutes[F] =
Router(
"fts" -> FullTextIndexRoutes.admin(cfg, restApp.backend),
"user/otp" -> TotpRoutes.admin(restApp.backend),
"user" -> UserRoutes.admin(restApp.backend),
"info" -> InfoRoutes.admin(cfg),
"fts" -> FullTextIndexRoutes.admin(cfg, restApp.backend),
"user/otp" -> TotpRoutes.admin(restApp.backend),
"user" -> UserRoutes.admin(restApp.backend),
"info" -> InfoRoutes.admin(cfg),
"attachments" -> AttachmentRoutes.admin(restApp.backend)
)

View File

@ -15,10 +15,10 @@ import org.typelevel.ci.CIString
case class CookieData(auth: AuthToken) {
def accountId: AccountId = auth.account
def asString: String = auth.asString
def asString: String = auth.asString
def asCookie(baseUrl: LenientUri): ResponseCookie = {
val sec = baseUrl.scheme.exists(_.endsWith("s"))
val sec = baseUrl.scheme.exists(_.endsWith("s"))
val path = baseUrl.path / "api" / "v1" / "sec"
ResponseCookie(
CookieData.cookieName,

View File

@ -40,9 +40,9 @@ object OpenId {
OnUserInfo { (req, provider, userInfo) =>
val dsl = new Http4sDsl[F] {}
import dsl._
val logger = Logger.log4s(log)
val baseUrl = ClientRequestInfo.getBaseUrl(config, req)
val uri = baseUrl.withQuery("openid", "1") / "app" / "login"
val logger = Logger.log4s(log)
val baseUrl = ClientRequestInfo.getBaseUrl(config, req)
val uri = baseUrl.withQuery("openid", "1") / "app" / "login"
val location = Location(Uri.unsafeFromString(uri.asString))
val cfg = config.openid
.find(_.provider.providerId == provider.providerId)
@ -229,9 +229,9 @@ object OpenId {
sealed trait ExtractResult
object ExtractResult {
final case class Identifier(name: Ident) extends ExtractResult
final case class Identifier(name: Ident) extends ExtractResult
final case class Account(accountId: AccountId) extends ExtractResult
final case class Failure(message: String) extends ExtractResult
final case class Failure(message: String) extends ExtractResult
}
}
}

View File

@ -15,7 +15,7 @@ case class RememberCookieData(token: RememberToken) {
def asString: String = token.asString
def asCookie(config: Login.RememberMe, baseUrl: LenientUri): ResponseCookie = {
val sec = baseUrl.scheme.exists(_.endsWith("s"))
val sec = baseUrl.scheme.exists(_.endsWith("s"))
val path = baseUrl.path / "api" / "v1"
ResponseCookie(
name = RememberCookieData.cookieName,

View File

@ -236,7 +236,7 @@ trait Conversions {
)
def mkItemLight(i: OFulltext.FtsItem): ItemLight = {
val il = mkItemLight(i.item)
val il = mkItemLight(i.item)
val highlight = mkHighlight(i.ftsData)
il.copy(highlighting = highlight)
}
@ -253,7 +253,7 @@ trait Conversions {
AttachmentLight(qa.id, qa.position, qa.name, qa.pageCount)
def mkItemLightWithTags(i: OFulltext.FtsItemWithTags): ItemLight = {
val il = mkItemLightWithTags(i.item)
val il = mkItemLightWithTags(i.item)
val highlight = mkHighlight(i.ftsData)
il.copy(highlighting = highlight)
}
@ -374,8 +374,8 @@ trait Conversions {
)
for {
metaData <- meta
_ <- Async[F].delay(logger.debug(s"Parsed upload meta data: $metaData"))
tracker <- Ident.randomId[F]
_ <- Async[F].delay(logger.debug(s"Parsed upload meta data: $metaData"))
tracker <- Ident.randomId[F]
} yield UploadData(metaData._1, metaData._2, files, prio, Some(tracker))
}
@ -398,8 +398,8 @@ trait Conversions {
def contacts(oid: Ident) =
v.contacts.traverse(c => newContact(c, oid.some, None))
for {
now <- Timestamp.current[F]
oid <- Ident.randomId[F]
now <- Timestamp.current[F]
oid <- Ident.randomId[F]
cont <- contacts(oid)
org = ROrganization(
oid,
@ -425,7 +425,7 @@ trait Conversions {
def contacts(oid: Ident) =
v.contacts.traverse(c => newContact(c, oid.some, None))
for {
now <- Timestamp.current[F]
now <- Timestamp.current[F]
cont <- contacts(v.id)
org = ROrganization(
v.id,
@ -462,8 +462,8 @@ trait Conversions {
def contacts(pid: Ident) =
v.contacts.traverse(c => newContact(c, None, pid.some))
for {
now <- Timestamp.current[F]
pid <- Ident.randomId[F]
now <- Timestamp.current[F]
pid <- Ident.randomId[F]
cont <- contacts(pid)
pers = RPerson(
pid,
@ -489,7 +489,7 @@ trait Conversions {
def contacts(pid: Ident) =
v.contacts.traverse(c => newContact(c, None, pid.some))
for {
now <- Timestamp.current[F]
now <- Timestamp.current[F]
cont <- contacts(v.id)
pers = RPerson(
v.id,
@ -738,7 +738,7 @@ object Conversions extends Conversions {
private def timeId[F[_]: Sync]: F[(Ident, Timestamp)] =
for {
id <- Ident.randomId[F]
id <- Ident.randomId[F]
now <- Timestamp.current
} yield (id, now)
}

View File

@ -28,10 +28,10 @@ object BinaryUtil {
): F[Response[F]] = {
import dsl._
val mt = MediaType.unsafeParse(data.meta.mimetype.asString)
val ctype = `Content-Type`(mt)
val mt = MediaType.unsafeParse(data.meta.mimetype.asString)
val ctype = `Content-Type`(mt)
val cntLen = `Content-Length`.unsafeFromLong(data.meta.length.bytes)
val eTag = ETag(data.meta.checksum.toHex)
val eTag = ETag(data.meta.checksum.toHex)
val disp =
`Content-Disposition`(
"inline",

View File

@ -16,8 +16,7 @@ import org.http4s._
import org.http4s.headers._
import org.typelevel.ci.CIString
/** Obtain information about the client by inspecting the request.
*/
/** Obtain information about the client by inspecting the request. */
object ClientRequestInfo {
def getBaseUrl[F[_]](cfg: Config, req: Request[F]): LenientUri =
@ -27,8 +26,8 @@ object ClientRequestInfo {
private def getBaseUrl[F[_]](req: Request[F], serverPort: Int): Option[LenientUri] =
for {
scheme <- NonEmptyList.fromList(getProtocol(req).toList)
host <- getHostname(req)
port = xForwardedPort(req).getOrElse(serverPort)
host <- getHostname(req)
port = xForwardedPort(req).getOrElse(serverPort)
hostPort = if (port == 80 || port == 443) host else s"$host:$port"
} yield LenientUri(scheme, Some(hostPort), LenientUri.EmptyPath, None, None)

View File

@ -72,17 +72,17 @@ object QueryParam {
object QueryOpt extends OptionalQueryParamDecoderMatcher[QueryString]("q")
object Query extends OptionalQueryParamDecoderMatcher[String]("q")
object Limit extends OptionalQueryParamDecoderMatcher[Int]("limit")
object Offset extends OptionalQueryParamDecoderMatcher[Int]("offset")
object Query extends OptionalQueryParamDecoderMatcher[String]("q")
object Limit extends OptionalQueryParamDecoderMatcher[Int]("limit")
object Offset extends OptionalQueryParamDecoderMatcher[Int]("offset")
object WithDetails extends OptionalQueryParamDecoderMatcher[Boolean]("withDetails")
object SearchKind extends OptionalQueryParamDecoderMatcher[SearchMode]("searchMode")
object TagSort extends OptionalQueryParamDecoderMatcher[TagOrder]("sort")
object EquipSort extends OptionalQueryParamDecoderMatcher[EquipmentOrder]("sort")
object OrgSort extends OptionalQueryParamDecoderMatcher[OrganizationOrder]("sort")
object PersonSort extends OptionalQueryParamDecoderMatcher[PersonOrder]("sort")
object FolderSort extends OptionalQueryParamDecoderMatcher[FolderOrder]("sort")
object FieldSort extends OptionalQueryParamDecoderMatcher[CustomFieldOrder]("sort")
object SearchKind extends OptionalQueryParamDecoderMatcher[SearchMode]("searchMode")
object TagSort extends OptionalQueryParamDecoderMatcher[TagOrder]("sort")
object EquipSort extends OptionalQueryParamDecoderMatcher[EquipmentOrder]("sort")
object OrgSort extends OptionalQueryParamDecoderMatcher[OrganizationOrder]("sort")
object PersonSort extends OptionalQueryParamDecoderMatcher[PersonOrder]("sort")
object FolderSort extends OptionalQueryParamDecoderMatcher[FolderOrder]("sort")
object FieldSort extends OptionalQueryParamDecoderMatcher[CustomFieldOrder]("sort")
object WithFallback extends OptionalQueryParamDecoderMatcher[Boolean]("withFallback")
}

View File

@ -31,7 +31,7 @@ object AttachmentMultiRoutes extends MultiIdSupport {
HttpRoutes.of { case req @ POST -> Root / "delete" =>
for {
json <- req.as[IdList]
json <- req.as[IdList]
attachments <- readIds[F](json.ids)
n <- backend.item.deleteAttachmentMultiple(attachments, user.account.collective)
res = BasicResult(

View File

@ -56,7 +56,7 @@ object AttachmentRoutes {
case req @ GET -> Root / Ident(id) =>
for {
fileData <- backend.itemSearch.findAttachment(id, user.account.collective)
inm = req.headers.get[`If-None-Match`].flatMap(_.tags)
inm = req.headers.get[`If-None-Match`].flatMap(_.tags)
matches = BinaryUtil.matchETag(fileData.map(_.meta), inm)
resp <-
fileData
@ -79,7 +79,7 @@ object AttachmentRoutes {
case req @ GET -> Root / Ident(id) / "original" =>
for {
fileData <- backend.itemSearch.findAttachmentSource(id, user.account.collective)
inm = req.headers.get[`If-None-Match`].flatMap(_.tags)
inm = req.headers.get[`If-None-Match`].flatMap(_.tags)
matches = BinaryUtil.matchETag(fileData.map(_.meta), inm)
resp <-
fileData
@ -104,7 +104,7 @@ object AttachmentRoutes {
for {
fileData <-
backend.itemSearch.findAttachmentArchive(id, user.account.collective)
inm = req.headers.get[`If-None-Match`].flatMap(_.tags)
inm = req.headers.get[`If-None-Match`].flatMap(_.tags)
matches = BinaryUtil.matchETag(fileData.map(_.meta), inm)
resp <-
fileData
@ -121,8 +121,8 @@ object AttachmentRoutes {
for {
fileData <-
backend.itemSearch.findAttachmentPreview(id, user.account.collective)
inm = req.headers.get[`If-None-Match`].flatMap(_.tags)
matches = BinaryUtil.matchETag(fileData.map(_.meta), inm)
inm = req.headers.get[`If-None-Match`].flatMap(_.tags)
matches = BinaryUtil.matchETag(fileData.map(_.meta), inm)
fallback = flag.getOrElse(false)
resp <-
fileData
@ -162,7 +162,7 @@ object AttachmentRoutes {
// this route exists to provide a stable url
// it redirects currently to viewerjs
val attachUrl = s"/api/v1/sec/attachment/${id.id}"
val path = s"/app/assets${Webjars.viewerjs}/index.html#$attachUrl"
val path = s"/app/assets${Webjars.viewerjs}/index.html#$attachUrl"
SeeOther(Location(Uri(path = Uri.Path.unsafeFromString(path))))
case GET -> Root / Ident(id) / "meta" =>
@ -174,8 +174,8 @@ object AttachmentRoutes {
case req @ POST -> Root / Ident(id) / "name" =>
for {
nn <- req.as[OptionalText]
res <- backend.item.setAttachmentName(id, nn.text, user.account.collective)
nn <- req.as[OptionalText]
res <- backend.item.setAttachmentName(id, nn.text, user.account.collective)
resp <- Ok(Conversions.basicResult(res, "Name updated."))
} yield resp

View File

@ -27,7 +27,7 @@ object CalEventCheckRoutes {
HttpRoutes.of { case req @ POST -> Root =>
for {
data <- req.as[CalEventCheck]
res <- testEvent(data.event)
res <- testEvent(data.event)
resp <- Ok(res)
} yield resp
}

View File

@ -43,7 +43,7 @@ object CheckFileRoutes {
HttpRoutes.of { case GET -> Root / Ident(id) / checksum =>
for {
items <- backend.itemSearch.findByFileSource(checksum, id)
resp <- items.map(convert).map(Ok(_)).getOrElse(NotFound())
resp <- items.map(convert).map(Ok(_)).getOrElse(NotFound())
} yield resp
}
}

View File

@ -30,8 +30,8 @@ object ClientSettingsRoutes {
case req @ PUT -> Root / Ident(clientId) =>
for {
data <- req.as[Json]
_ <- backend.clientSettings.save(clientId, user.account, data)
res <- Ok(BasicResult(true, "Settings stored"))
_ <- backend.clientSettings.save(clientId, user.account, data)
res <- Ok(BasicResult(true, "Settings stored"))
} yield res
case GET -> Root / Ident(clientId) =>

View File

@ -33,14 +33,14 @@ object CollectiveRoutes {
HttpRoutes.of {
case GET -> Root / "insights" =>
for {
ins <- backend.collective.insights(user.account.collective)
ins <- backend.collective.insights(user.account.collective)
resp <- Ok(Conversions.mkItemInsights(ins))
} yield resp
case GET -> Root / "tagcloud" =>
for {
cloud <- backend.collective.tagCloud(user.account.collective)
resp <- Ok(Conversions.mkTagCloud(cloud))
resp <- Ok(Conversions.mkTagCloud(cloud))
} yield resp
case req @ POST -> Root / "settings" =>
@ -109,7 +109,7 @@ object CollectiveRoutes {
case POST -> Root / "classifier" / "startonce" =>
for {
_ <- backend.collective.startLearnClassifier(user.account.collective)
_ <- backend.collective.startLearnClassifier(user.account.collective)
resp <- Ok(BasicResult(true, "Task submitted"))
} yield resp

View File

@ -48,26 +48,26 @@ object CustomFieldRoutes {
case req @ POST -> Root =>
for {
data <- req.as[NewCustomField]
res <- backend.customFields.create(convertNewField(user, data))
res <- backend.customFields.create(convertNewField(user, data))
resp <- Ok(convertResult(res))
} yield resp
case GET -> Root / Ident(id) =>
(for {
field <- OptionT(backend.customFields.findById(user.account.collective, id))
res <- OptionT.liftF(Ok(convertField(field)))
res <- OptionT.liftF(Ok(convertField(field)))
} yield res).getOrElseF(NotFound(BasicResult(false, "Not found")))
case req @ PUT -> Root / Ident(id) =>
for {
data <- req.as[NewCustomField]
res <- backend.customFields.change(convertChangeField(id, user, data))
res <- backend.customFields.change(convertChangeField(id, user, data))
resp <- Ok(convertResult(res))
} yield resp
case DELETE -> Root / Ident(id) =>
for {
res <- backend.customFields.delete(user.account.collective, id)
res <- backend.customFields.delete(user.account.collective, id)
resp <- Ok(convertResult(res))
} yield resp
}

View File

@ -42,30 +42,30 @@ object EquipmentRoutes {
case req @ POST -> Root =>
for {
data <- req.as[Equipment]
data <- req.as[Equipment]
equip <- newEquipment(data, user.account.collective)
res <- backend.equipment.add(equip)
resp <- Ok(basicResult(res, "Equipment created"))
res <- backend.equipment.add(equip)
resp <- Ok(basicResult(res, "Equipment created"))
} yield resp
case req @ PUT -> Root =>
for {
data <- req.as[Equipment]
data <- req.as[Equipment]
equip <- changeEquipment(data, user.account.collective)
res <- backend.equipment.update(equip)
resp <- Ok(basicResult(res, "Equipment updated."))
res <- backend.equipment.update(equip)
resp <- Ok(basicResult(res, "Equipment updated."))
} yield resp
case DELETE -> Root / Ident(id) =>
for {
del <- backend.equipment.delete(id, user.account.collective)
del <- backend.equipment.delete(id, user.account.collective)
resp <- Ok(basicResult(del, "Equipment deleted."))
} yield resp
case GET -> Root / Ident(id) =>
(for {
equip <- OptionT(backend.equipment.find(user.account, id))
resp <- OptionT.liftF(Ok(mkEquipment(equip)))
resp <- OptionT.liftF(Ok(mkEquipment(equip)))
} yield resp).getOrElseF(NotFound())
}
}

View File

@ -37,15 +37,15 @@ object FolderRoutes {
val login =
owning.filter(identity).map(_ => user.account.user)
for {
all <- backend.folder.findAll(user.account, login, q.map(_.q), order)
all <- backend.folder.findAll(user.account, login, q.map(_.q), order)
resp <- Ok(FolderList(all.map(mkFolder).toList))
} yield resp
case req @ POST -> Root =>
for {
data <- req.as[NewFolder]
data <- req.as[NewFolder]
nfolder <- newFolder(data, user.account)
res <- backend.folder.add(nfolder, Some(user.account.user))
res <- backend.folder.add(nfolder, Some(user.account.user))
resp <-
Ok(Conversions.idResult(res, nfolder.id, "Folder successfully created."))
} yield resp
@ -53,31 +53,31 @@ object FolderRoutes {
case GET -> Root / Ident(id) =>
(for {
folder <- OptionT(backend.folder.findById(id, user.account))
resp <- OptionT.liftF(Ok(mkFolderDetail(folder)))
resp <- OptionT.liftF(Ok(mkFolderDetail(folder)))
} yield resp).getOrElseF(NotFound())
case req @ PUT -> Root / Ident(id) =>
for {
data <- req.as[NewFolder]
res <- backend.folder.changeName(id, user.account, data.name)
res <- backend.folder.changeName(id, user.account, data.name)
resp <- Ok(mkFolderChangeResult(res))
} yield resp
case DELETE -> Root / Ident(id) =>
for {
res <- backend.folder.delete(id, user.account)
res <- backend.folder.delete(id, user.account)
resp <- Ok(mkFolderChangeResult(res))
} yield resp
case PUT -> Root / Ident(id) / "member" / Ident(userId) =>
for {
res <- backend.folder.addMember(id, user.account, userId)
res <- backend.folder.addMember(id, user.account, userId)
resp <- Ok(mkFolderChangeResult(res))
} yield resp
case DELETE -> Root / Ident(id) / "member" / Ident(userId) =>
for {
res <- backend.folder.removeMember(id, user.account, userId)
res <- backend.folder.removeMember(id, user.account, userId)
resp <- Ok(mkFolderChangeResult(res))
} yield resp
}

View File

@ -33,7 +33,7 @@ object FullTextIndexRoutes {
HttpRoutes.of { case POST -> Root / "reIndex" =>
for {
res <- backend.fulltext.reindexCollective(user.account).attempt
res <- backend.fulltext.reindexCollective(user.account).attempt
resp <- Ok(Conversions.basicResult(res, "Full-text index will be re-created."))
} yield resp
}
@ -47,7 +47,7 @@ object FullTextIndexRoutes {
HttpRoutes.of { case POST -> Root / "reIndexAll" =>
for {
res <- backend.fulltext.reindexAll.attempt
res <- backend.fulltext.reindexAll.attempt
resp <- Ok(Conversions.basicResult(res, "Full-text index will be re-created."))
} yield resp
}

View File

@ -50,7 +50,7 @@ object IntegrationEndpointRoutes {
case req @ GET -> Root / "item" / Ident(collective) =>
(for {
_ <- validate(req, collective)
_ <- validate(req, collective)
res <- EitherT.liftF[F, Response[F], Response[F]](Ok(()))
} yield res).fold(identity, identity)
@ -112,7 +112,7 @@ object IntegrationEndpointRoutes {
)
account = AccountId(coll, DocspellSystem.user)
result <- backend.upload.submit(updata, account, true, None)
res <- Ok(basicResult(result))
res <- Ok(basicResult(result))
} yield res
}

View File

@ -59,7 +59,7 @@ object ItemMultiRoutes extends MultiIdSupport {
case req @ PUT -> Root / "tags" =>
for {
json <- req.as[ItemsAndRefs]
json <- req.as[ItemsAndRefs]
items <- readIds[F](json.items)
res <- backend.item.setTagsMultipleItems(
items,
@ -71,7 +71,7 @@ object ItemMultiRoutes extends MultiIdSupport {
case req @ POST -> Root / "tags" =>
for {
json <- req.as[ItemsAndRefs]
json <- req.as[ItemsAndRefs]
items <- readIds[F](json.items)
res <- backend.item.linkTagsMultipleItems(
items,
@ -83,7 +83,7 @@ object ItemMultiRoutes extends MultiIdSupport {
case req @ POST -> Root / "tagsremove" =>
for {
json <- req.as[ItemsAndRefs]
json <- req.as[ItemsAndRefs]
items <- readIds[F](json.items)
res <- backend.item.removeTagsMultipleItems(
items,
@ -95,7 +95,7 @@ object ItemMultiRoutes extends MultiIdSupport {
case req @ PUT -> Root / "name" =>
for {
json <- req.as[ItemsAndName]
json <- req.as[ItemsAndName]
items <- readIds[F](json.items)
res <- backend.item.setNameMultiple(
items,
@ -107,15 +107,15 @@ object ItemMultiRoutes extends MultiIdSupport {
case req @ PUT -> Root / "folder" =>
for {
json <- req.as[ItemsAndRef]
json <- req.as[ItemsAndRef]
items <- readIds[F](json.items)
res <- backend.item.setFolderMultiple(items, json.ref, user.account.collective)
res <- backend.item.setFolderMultiple(items, json.ref, user.account.collective)
resp <- Ok(Conversions.basicResult(res, "Folder updated"))
} yield resp
case req @ PUT -> Root / "direction" =>
for {
json <- req.as[ItemsAndDirection]
json <- req.as[ItemsAndDirection]
items <- readIds[F](json.items)
res <- backend.item.setDirection(items, json.direction, user.account.collective)
resp <- Ok(Conversions.basicResult(res, "Direction updated"))
@ -123,65 +123,65 @@ object ItemMultiRoutes extends MultiIdSupport {
case req @ PUT -> Root / "date" =>
for {
json <- req.as[ItemsAndDate]
json <- req.as[ItemsAndDate]
items <- readIds[F](json.items)
res <- backend.item.setItemDate(items, json.date, user.account.collective)
resp <- Ok(Conversions.basicResult(res, "Item date updated"))
res <- backend.item.setItemDate(items, json.date, user.account.collective)
resp <- Ok(Conversions.basicResult(res, "Item date updated"))
} yield resp
case req @ PUT -> Root / "duedate" =>
for {
json <- req.as[ItemsAndDate]
json <- req.as[ItemsAndDate]
items <- readIds[F](json.items)
res <- backend.item.setItemDueDate(items, json.date, user.account.collective)
resp <- Ok(Conversions.basicResult(res, "Item due date updated"))
res <- backend.item.setItemDueDate(items, json.date, user.account.collective)
resp <- Ok(Conversions.basicResult(res, "Item due date updated"))
} yield resp
case req @ PUT -> Root / "corrOrg" =>
for {
json <- req.as[ItemsAndRef]
json <- req.as[ItemsAndRef]
items <- readIds[F](json.items)
res <- backend.item.setCorrOrg(items, json.ref, user.account.collective)
resp <- Ok(Conversions.basicResult(res, "Correspondent organization updated"))
res <- backend.item.setCorrOrg(items, json.ref, user.account.collective)
resp <- Ok(Conversions.basicResult(res, "Correspondent organization updated"))
} yield resp
case req @ PUT -> Root / "corrPerson" =>
for {
json <- req.as[ItemsAndRef]
json <- req.as[ItemsAndRef]
items <- readIds[F](json.items)
res <- backend.item.setCorrPerson(items, json.ref, user.account.collective)
resp <- Ok(Conversions.basicResult(res, "Correspondent person updated"))
res <- backend.item.setCorrPerson(items, json.ref, user.account.collective)
resp <- Ok(Conversions.basicResult(res, "Correspondent person updated"))
} yield resp
case req @ PUT -> Root / "concPerson" =>
for {
json <- req.as[ItemsAndRef]
json <- req.as[ItemsAndRef]
items <- readIds[F](json.items)
res <- backend.item.setConcPerson(items, json.ref, user.account.collective)
resp <- Ok(Conversions.basicResult(res, "Concerned person updated"))
res <- backend.item.setConcPerson(items, json.ref, user.account.collective)
resp <- Ok(Conversions.basicResult(res, "Concerned person updated"))
} yield resp
case req @ PUT -> Root / "concEquipment" =>
for {
json <- req.as[ItemsAndRef]
json <- req.as[ItemsAndRef]
items <- readIds[F](json.items)
res <- backend.item.setConcEquip(items, json.ref, user.account.collective)
resp <- Ok(Conversions.basicResult(res, "Concerned equipment updated"))
res <- backend.item.setConcEquip(items, json.ref, user.account.collective)
resp <- Ok(Conversions.basicResult(res, "Concerned equipment updated"))
} yield resp
case req @ POST -> Root / "reprocess" =>
for {
json <- req.as[IdList]
json <- req.as[IdList]
items <- readIds[F](json.ids)
res <- backend.item.reprocessAll(items, user.account, true)
resp <- Ok(Conversions.basicResult(res, "Re-process task(s) submitted."))
res <- backend.item.reprocessAll(items, user.account, true)
resp <- Ok(Conversions.basicResult(res, "Re-process task(s) submitted."))
} yield resp
case req @ POST -> Root / "deleteAll" =>
for {
json <- req.as[IdList]
json <- req.as[IdList]
items <- readIds[F](json.ids)
n <- backend.item.setDeletedState(items, user.account.collective)
n <- backend.item.setDeletedState(items, user.account.collective)
res = BasicResult(
n > 0,
if (n > 0) "Item(s) deleted" else "Item deletion failed."
@ -191,15 +191,15 @@ object ItemMultiRoutes extends MultiIdSupport {
case req @ POST -> Root / "restoreAll" =>
for {
json <- req.as[IdList]
json <- req.as[IdList]
items <- readIds[F](json.ids)
res <- backend.item.restore(items, user.account.collective)
resp <- Ok(Conversions.basicResult(res, "Item(s) deleted"))
res <- backend.item.restore(items, user.account.collective)
resp <- Ok(Conversions.basicResult(res, "Item(s) deleted"))
} yield resp
case req @ PUT -> Root / "customfield" =>
for {
json <- req.as[ItemsAndFieldValue]
json <- req.as[ItemsAndFieldValue]
items <- readIds[F](json.items)
res <- backend.customFields.setValueMultiple(
items,
@ -210,7 +210,7 @@ object ItemMultiRoutes extends MultiIdSupport {
case req @ POST -> Root / "customfieldremove" =>
for {
json <- req.as[ItemsAndName]
json <- req.as[ItemsAndName]
items <- readIds[F](json.items)
field <- readId[F](json.name)
res <- backend.customFields.deleteValue(
@ -221,10 +221,10 @@ object ItemMultiRoutes extends MultiIdSupport {
case req @ POST -> Root / "merge" =>
for {
json <- req.as[IdList]
json <- req.as[IdList]
items <- readIds[F](json.ids)
logger = Logger.log4s(log4sLogger)
res <- backend.item.merge(logger, items, user.account.collective)
res <- backend.item.merge(logger, items, user.account.collective)
resp <- Ok(Conversions.basicResult(res, "Items merged"))
} yield resp
}

View File

@ -65,7 +65,7 @@ object ItemRoutes {
case GET -> Root / "searchStats" :? QP.Query(q) :? QP.SearchKind(searchMode) =>
val itemQuery = ItemQueryString(q)
val fixQuery = Query.Fix(user.account, None, None)
val fixQuery = Query.Fix(user.account, None, None)
val settings = OSimpleSearch.StatsSettings(
useFTS = cfg.fullTextSearch.enabled,
searchMode = searchMode.getOrElse(SearchMode.Normal)
@ -97,7 +97,7 @@ object ItemRoutes {
for {
userQuery <- req.as[ItemQuery]
itemQuery = ItemQueryString(userQuery.query)
fixQuery = Query.Fix(user.account, None, None)
fixQuery = Query.Fix(user.account, None, None)
settings = OSimpleSearch.StatsSettings(
useFTS = cfg.fullTextSearch.enabled,
searchMode = userQuery.searchMode.getOrElse(SearchMode.Normal)
@ -140,26 +140,26 @@ object ItemRoutes {
case POST -> Root / Ident(id) / "confirm" =>
for {
res <- backend.item.setState(id, ItemState.Confirmed, user.account.collective)
res <- backend.item.setState(id, ItemState.Confirmed, user.account.collective)
resp <- Ok(Conversions.basicResult(res, "Item data confirmed"))
} yield resp
case POST -> Root / Ident(id) / "unconfirm" =>
for {
res <- backend.item.setState(id, ItemState.Created, user.account.collective)
res <- backend.item.setState(id, ItemState.Created, user.account.collective)
resp <- Ok(Conversions.basicResult(res, "Item back to created."))
} yield resp
case POST -> Root / Ident(id) / "restore" =>
for {
res <- backend.item.restore(NonEmptyList.of(id), user.account.collective)
res <- backend.item.restore(NonEmptyList.of(id), user.account.collective)
resp <- Ok(Conversions.basicResult(res, "Item restored."))
} yield resp
case req @ PUT -> Root / Ident(id) / "tags" =>
for {
tags <- req.as[StringList].map(_.items)
res <- backend.item.setTags(id, tags, user.account.collective)
res <- backend.item.setTags(id, tags, user.account.collective)
resp <- Ok(Conversions.basicResult(res, "Tags updated"))
} yield resp
@ -167,21 +167,21 @@ object ItemRoutes {
for {
data <- req.as[Tag]
rtag <- Conversions.newTag(data, user.account.collective)
res <- backend.item.addNewTag(id, rtag)
res <- backend.item.addNewTag(id, rtag)
resp <- Ok(Conversions.basicResult(res, "Tag added."))
} yield resp
case req @ PUT -> Root / Ident(id) / "taglink" =>
for {
tags <- req.as[StringList]
res <- backend.item.linkTags(id, tags.items, user.account.collective)
res <- backend.item.linkTags(id, tags.items, user.account.collective)
resp <- Ok(Conversions.basicResult(res, "Tags linked"))
} yield resp
case req @ POST -> Root / Ident(id) / "tagtoggle" =>
for {
tags <- req.as[StringList]
res <- backend.item.toggleTags(id, tags.items, user.account.collective)
res <- backend.item.toggleTags(id, tags.items, user.account.collective)
resp <- Ok(Conversions.basicResult(res, "Tags linked"))
} yield resp
@ -210,8 +210,8 @@ object ItemRoutes {
case req @ PUT -> Root / Ident(id) / "folder" =>
for {
idref <- req.as[OptionalId]
res <- backend.item.setFolder(id, idref.id, user.account.collective)
resp <- Ok(Conversions.basicResult(res, "Folder updated"))
res <- backend.item.setFolder(id, idref.id, user.account.collective)
resp <- Ok(Conversions.basicResult(res, "Folder updated"))
} yield resp
case req @ PUT -> Root / Ident(id) / "corrOrg" =>
@ -228,8 +228,8 @@ object ItemRoutes {
case req @ POST -> Root / Ident(id) / "corrOrg" =>
for {
data <- req.as[Organization]
org <- Conversions.newOrg(data, user.account.collective)
res <- backend.item.addCorrOrg(id, org)
org <- Conversions.newOrg(data, user.account.collective)
res <- backend.item.addCorrOrg(id, org)
resp <- Ok(Conversions.basicResult(res, "Correspondent organization updated"))
} yield resp
@ -248,7 +248,7 @@ object ItemRoutes {
for {
data <- req.as[Person]
pers <- Conversions.newPerson(data, user.account.collective)
res <- backend.item.addCorrPerson(id, pers)
res <- backend.item.addCorrPerson(id, pers)
resp <- Ok(Conversions.basicResult(res, "Correspondent person updated"))
} yield resp
@ -267,7 +267,7 @@ object ItemRoutes {
for {
data <- req.as[Person]
pers <- Conversions.newPerson(data, user.account.collective)
res <- backend.item.addConcPerson(id, pers)
res <- backend.item.addConcPerson(id, pers)
resp <- Ok(Conversions.basicResult(res, "Concerned person updated"))
} yield resp
@ -284,16 +284,16 @@ object ItemRoutes {
case req @ POST -> Root / Ident(id) / "concEquipment" =>
for {
data <- req.as[Equipment]
data <- req.as[Equipment]
equip <- Conversions.newEquipment(data, user.account.collective)
res <- backend.item.addConcEquip(id, equip)
resp <- Ok(Conversions.basicResult(res, "Concerned equipment updated"))
res <- backend.item.addConcEquip(id, equip)
resp <- Ok(Conversions.basicResult(res, "Concerned equipment updated"))
} yield resp
case req @ PUT -> Root / Ident(id) / "notes" =>
for {
text <- req.as[OptionalText]
res <- backend.item.setNotes(id, text.text.notEmpty, user.account.collective)
res <- backend.item.setNotes(id, text.text.notEmpty, user.account.collective)
resp <- Ok(Conversions.basicResult(res, "Notes updated"))
} yield resp
@ -311,7 +311,7 @@ object ItemRoutes {
case req @ PUT -> Root / Ident(id) / "duedate" =>
for {
date <- req.as[OptionalDate]
_ <- logger.fdebug(s"Setting item due date to ${date.date}")
_ <- logger.fdebug(s"Setting item due date to ${date.date}")
res <- backend.item.setItemDueDate(
NonEmptyList.of(id),
date.date,
@ -323,7 +323,7 @@ object ItemRoutes {
case req @ PUT -> Root / Ident(id) / "date" =>
for {
date <- req.as[OptionalDate]
_ <- logger.fdebug(s"Setting item date to ${date.date}")
_ <- logger.fdebug(s"Setting item date to ${date.date}")
res <- backend.item.setItemDate(
NonEmptyList.of(id),
date.date,
@ -342,8 +342,8 @@ object ItemRoutes {
case req @ POST -> Root / Ident(id) / "attachment" / "movebefore" =>
for {
data <- req.as[MoveAttachment]
_ <- logger.fdebug(s"Move item (${id.id}) attachment $data")
res <- backend.item.moveAttachmentBefore(id, data.source, data.target)
_ <- logger.fdebug(s"Move item (${id.id}) attachment $data")
res <- backend.item.moveAttachmentBefore(id, data.source, data.target)
resp <- Ok(Conversions.basicResult(res, "Attachment moved."))
} yield resp
@ -352,8 +352,8 @@ object ItemRoutes {
NotFound(BasicResult(false, "Not found"))
for {
preview <- backend.itemSearch.findItemPreview(id, user.account.collective)
inm = req.headers.get[`If-None-Match`].flatMap(_.tags)
matches = BinaryUtil.matchETag(preview.map(_.meta), inm)
inm = req.headers.get[`If-None-Match`].flatMap(_.tags)
matches = BinaryUtil.matchETag(preview.map(_.meta), inm)
fallback = flag.getOrElse(false)
resp <-
preview
@ -380,8 +380,8 @@ object ItemRoutes {
for {
data <- req.as[IdList]
ids = data.ids.flatMap(s => Ident.fromString(s).toOption)
_ <- logger.fdebug(s"Re-process item ${id.id}")
res <- backend.item.reprocess(id, ids, user.account, true)
_ <- logger.fdebug(s"Re-process item ${id.id}")
res <- backend.item.reprocess(id, ids, user.account, true)
resp <- Ok(Conversions.basicResult(res, "Re-process task submitted."))
} yield resp

View File

@ -37,13 +37,13 @@ object JobQueueRoutes {
case POST -> Root / Ident(id) / "cancel" =>
for {
result <- backend.job.cancelJob(id, user.account.collective)
resp <- Ok(Conversions.basicResult(result))
resp <- Ok(Conversions.basicResult(result))
} yield resp
case req @ POST -> Root / Ident(id) / "priority" =>
for {
prio <- req.as[JobPriority]
res <- backend.job.setPriority(id, user.account.collective, prio.priority)
res <- backend.job.setPriority(id, user.account.collective, prio.priority)
resp <- Ok(Conversions.basicResult(res, "Job priority changed"))
} yield resp
}

View File

@ -69,7 +69,7 @@ object LoginRoutes {
case req @ POST -> Root / "logout" =>
for {
_ <- RememberCookieData.fromCookie(req).traverse(S.removeRememberToken)
_ <- RememberCookieData.fromCookie(req).traverse(S.removeRememberToken)
res <- Ok()
} yield res
.removeCookie(CookieData.deleteCookie(getBaseUrl(cfg, req)))
@ -90,7 +90,7 @@ object LoginRoutes {
import dsl._
res match {
case Login.Result.Ok(token, remember) =>
val cd = CookieData(token)
val cd = CookieData(token)
val rem = remember.map(RememberCookieData.apply)
for {
resp <- Ok(

View File

@ -44,9 +44,9 @@ object MailSendRoutes {
def convertIn(item: Ident, s: SimpleMail): Either[String, ItemMail] =
for {
rec <- s.recipients.traverse(MailAddress.parse)
cc <- s.cc.traverse(MailAddress.parse)
bcc <- s.bcc.traverse(MailAddress.parse)
rec <- s.recipients.traverse(MailAddress.parse)
cc <- s.cc.traverse(MailAddress.parse)
bcc <- s.bcc.traverse(MailAddress.parse)
fileIds <- s.attachmentIds.traverse(Ident.fromString)
sel =
if (s.addAllAttachments) AttachSelection.All

View File

@ -49,13 +49,13 @@ object MailSettingsRoutes {
case GET -> Root / "smtp" / Ident(name) =>
(for {
ems <- backend.mail.findSmtpSettings(user.account, name)
ems <- backend.mail.findSmtpSettings(user.account, name)
resp <- OptionT.liftF(Ok(convert(ems)))
} yield resp).getOrElseF(NotFound())
case GET -> Root / "imap" / Ident(name) =>
(for {
ems <- backend.mail.findImapSettings(user.account, name)
ems <- backend.mail.findImapSettings(user.account, name)
resp <- OptionT.liftF(Ok(convert(ems)))
} yield resp).getOrElseF(NotFound())

View File

@ -32,22 +32,22 @@ object NotifyDueItemsRoutes {
user: AuthToken
): HttpRoutes[F] = {
val dsl = new Http4sDsl[F] {}
val ut = backend.userTask
val ut = backend.userTask
import dsl._
HttpRoutes.of {
case GET -> Root / Ident(id) =>
(for {
task <- ut.findNotifyDueItems(id, UserTaskScope(user.account))
res <- OptionT.liftF(taskToSettings(user.account, backend, task))
res <- OptionT.liftF(taskToSettings(user.account, backend, task))
resp <- OptionT.liftF(Ok(res))
} yield resp).getOrElseF(NotFound())
case req @ POST -> Root / "startonce" =>
for {
data <- req.as[NotificationSettings]
data <- req.as[NotificationSettings]
newId <- Ident.randomId[F]
task <- makeTask(newId, getBaseUrl(cfg, req), user.account, data)
task <- makeTask(newId, getBaseUrl(cfg, req), user.account, data)
res <-
ut.executeNow(UserTaskScope(user.account), None, task)
.attempt
@ -83,9 +83,9 @@ object NotifyDueItemsRoutes {
case req @ POST -> Root =>
for {
data <- req.as[NotificationSettings]
data <- req.as[NotificationSettings]
newId <- Ident.randomId[F]
task <- makeTask(newId, getBaseUrl(cfg, req), user.account, data)
task <- makeTask(newId, getBaseUrl(cfg, req), user.account, data)
res <-
ut.submitNotifyDueItems(UserTaskScope(user.account), None, task)
.attempt

View File

@ -50,29 +50,29 @@ object OrganizationRoutes {
case req @ POST -> Root =>
for {
data <- req.as[Organization]
data <- req.as[Organization]
newOrg <- newOrg(data, user.account.collective)
added <- backend.organization.addOrg(newOrg)
resp <- Ok(basicResult(added, "New organization saved."))
added <- backend.organization.addOrg(newOrg)
resp <- Ok(basicResult(added, "New organization saved."))
} yield resp
case req @ PUT -> Root =>
for {
data <- req.as[Organization]
upOrg <- changeOrg(data, user.account.collective)
data <- req.as[Organization]
upOrg <- changeOrg(data, user.account.collective)
update <- backend.organization.updateOrg(upOrg)
resp <- Ok(basicResult(update, "Organization updated."))
resp <- Ok(basicResult(update, "Organization updated."))
} yield resp
case DELETE -> Root / Ident(id) =>
for {
delOrg <- backend.organization.deleteOrg(id, user.account.collective)
resp <- Ok(basicResult(delOrg, "Organization deleted."))
resp <- Ok(basicResult(delOrg, "Organization deleted."))
} yield resp
case GET -> Root / Ident(id) =>
(for {
org <- OptionT(backend.organization.findOrg(user.account, id))
org <- OptionT(backend.organization.findOrg(user.account, id))
resp <- OptionT.liftF(Ok(mkOrg(org)))
} yield resp).getOrElseF(NotFound())
}

View File

@ -57,30 +57,30 @@ object PersonRoutes {
case req @ POST -> Root =>
for {
data <- req.as[Person]
data <- req.as[Person]
newPer <- newPerson(data, user.account.collective)
added <- backend.organization.addPerson(newPer)
resp <- Ok(basicResult(added, "New person saved."))
added <- backend.organization.addPerson(newPer)
resp <- Ok(basicResult(added, "New person saved."))
} yield resp
case req @ PUT -> Root =>
for {
data <- req.as[Person]
upPer <- changePerson(data, user.account.collective)
data <- req.as[Person]
upPer <- changePerson(data, user.account.collective)
update <- backend.organization.updatePerson(upPer)
resp <- Ok(basicResult(update, "Person updated."))
resp <- Ok(basicResult(update, "Person updated."))
} yield resp
case DELETE -> Root / Ident(id) =>
for {
_ <- logger.fdebug(s"Deleting person ${id.id}")
_ <- logger.fdebug(s"Deleting person ${id.id}")
delOrg <- backend.organization.deletePerson(id, user.account.collective)
resp <- Ok(basicResult(delOrg, "Person deleted."))
resp <- Ok(basicResult(delOrg, "Person deleted."))
} yield resp
case GET -> Root / Ident(id) =>
(for {
org <- OptionT(backend.organization.findPerson(user.account, id))
org <- OptionT(backend.organization.findPerson(user.account, id))
resp <- OptionT.liftF(Ok(mkPerson(org)))
} yield resp).getOrElseF(NotFound())
}

View File

@ -32,14 +32,14 @@ object RegisterRoutes {
case req @ POST -> Root / "register" =>
for {
data <- req.as[Registration]
res <- backend.signup.register(cfg.backend.signup)(convert(data))
res <- backend.signup.register(cfg.backend.signup)(convert(data))
resp <- Ok(convert(res))
} yield resp
case req @ POST -> Root / "newinvite" =>
for {
data <- req.as[GenInvite]
res <- backend.signup.newInvite(cfg.backend.signup)(data.password)
res <- backend.signup.newInvite(cfg.backend.signup)(data.password)
resp <- Ok(convert(res))
} yield resp
}

View File

@ -29,22 +29,22 @@ object ScanMailboxRoutes {
user: AuthToken
): HttpRoutes[F] = {
val dsl = new Http4sDsl[F] {}
val ut = backend.userTask
val ut = backend.userTask
import dsl._
HttpRoutes.of {
case GET -> Root / Ident(id) =>
(for {
task <- ut.findScanMailbox(id, UserTaskScope(user.account))
res <- OptionT.liftF(taskToSettings(user.account, backend, task))
res <- OptionT.liftF(taskToSettings(user.account, backend, task))
resp <- OptionT.liftF(Ok(res))
} yield resp).getOrElseF(NotFound())
case req @ POST -> Root / "startonce" =>
for {
data <- req.as[ScanMailboxSettings]
data <- req.as[ScanMailboxSettings]
newId <- Ident.randomId[F]
task <- makeTask(newId, user.account, data)
task <- makeTask(newId, user.account, data)
res <-
ut.executeNow(UserTaskScope(user.account), None, task)
.attempt
@ -80,9 +80,9 @@ object ScanMailboxRoutes {
case req @ POST -> Root =>
for {
data <- req.as[ScanMailboxSettings]
data <- req.as[ScanMailboxSettings]
newId <- Ident.randomId[F]
task <- makeTask(newId, user.account, data)
task <- makeTask(newId, user.account, data)
res <-
ut.submitScanMailbox(UserTaskScope(user.account), None, task)
.attempt

View File

@ -30,7 +30,7 @@ object SentMailRoutes {
HttpRoutes.of {
case GET -> Root / "item" / Ident(id) =>
for {
all <- backend.mail.getSentMailsForItem(user.account, id)
all <- backend.mail.getSentMailsForItem(user.account, id)
resp <- Ok(SentMails(all.map(convert).toList))
} yield resp
@ -42,7 +42,7 @@ object SentMailRoutes {
case DELETE -> Root / "mail" / Ident(mailId) =>
for {
n <- backend.mail.deleteSentMail(user.account, mailId)
n <- backend.mail.deleteSentMail(user.account, mailId)
resp <- Ok(BasicResult(n > 0, s"Mails deleted: $n"))
} yield resp
}

View File

@ -36,10 +36,10 @@ object SourceRoutes {
case req @ POST -> Root =>
for {
data <- req.as[SourceTagIn]
src <- newSource(data.source, user.account.collective)
data <- req.as[SourceTagIn]
src <- newSource(data.source, user.account.collective)
added <- backend.source.add(src, data.tags)
resp <- Ok(basicResult(added, "Source added."))
resp <- Ok(basicResult(added, "Source added."))
} yield resp
case req @ PUT -> Root =>
@ -47,12 +47,12 @@ object SourceRoutes {
data <- req.as[SourceTagIn]
src = changeSource(data.source, user.account.collective)
updated <- backend.source.update(src, data.tags)
resp <- Ok(basicResult(updated, "Source updated."))
resp <- Ok(basicResult(updated, "Source updated."))
} yield resp
case DELETE -> Root / Ident(id) =>
for {
del <- backend.source.delete(id, user.account.collective)
del <- backend.source.delete(id, user.account.collective)
resp <- Ok(basicResult(del, "Source deleted."))
} yield resp
}

View File

@ -42,8 +42,8 @@ object TagRoutes {
case req @ POST -> Root =>
for {
data <- req.as[Tag]
tag <- newTag(data, user.account.collective)
res <- backend.tag.add(tag)
tag <- newTag(data, user.account.collective)
res <- backend.tag.add(tag)
resp <- Ok(basicResult(res, "Tag successfully created."))
} yield resp
@ -51,13 +51,13 @@ object TagRoutes {
for {
data <- req.as[Tag]
tag = changeTag(data, user.account.collective)
res <- backend.tag.update(tag)
res <- backend.tag.update(tag)
resp <- Ok(basicResult(res, "Tag successfully updated."))
} yield resp
case DELETE -> Root / Ident(id) =>
for {
del <- backend.tag.delete(id, user.account.collective)
del <- backend.tag.delete(id, user.account.collective)
resp <- Ok(basicResult(del, "Tag successfully deleted."))
} yield resp
}

View File

@ -51,14 +51,14 @@ object TotpRoutes {
InternalServerError(BasicResult(false, ex.getMessage))
case s @ OTotp.InitResult.Success(_, key) =>
val issuer = cfg.appName
val uri = s.authenticatorUrl(issuer)
val uri = s.authenticatorUrl(issuer)
Ok(OtpResult(uri, key.data.toBase32, "totp", issuer))
}
} yield resp
case req @ POST -> Root / "confirm" =>
for {
data <- req.as[OtpConfirm]
data <- req.as[OtpConfirm]
result <- backend.totp.confirmInit(user.account, OnetimePassword(data.otp.pass))
resp <- result match {
case OTotp.ConfirmResult.Success =>
@ -71,7 +71,7 @@ object TotpRoutes {
case POST -> Root / "disable" =>
for {
result <- backend.totp.disable(user.account)
resp <- Ok(Conversions.basicResult(result, "TOTP setup disabled."))
resp <- Ok(Conversions.basicResult(result, "TOTP setup disabled."))
} yield resp
}
}
@ -82,9 +82,9 @@ object TotpRoutes {
HttpRoutes.of { case req @ POST -> Root / "resetOTP" =>
for {
data <- req.as[ResetPassword]
data <- req.as[ResetPassword]
result <- backend.totp.disable(data.account)
resp <- Ok(Conversions.basicResult(result, "TOTP setup disabled."))
resp <- Ok(Conversions.basicResult(result, "TOTP setup disabled."))
} yield resp
}
}

View File

@ -90,7 +90,7 @@ object UploadRoutes {
cfg.backend.files.validMimeTypes
)
result <- backend.upload.submitEither(updata, accOrSrc, true, itemId)
res <- Ok(basicResult(result))
res <- Ok(basicResult(result))
} yield res
}
}

View File

@ -47,10 +47,10 @@ object UserRoutes {
case req @ POST -> Root =>
for {
data <- req.as[User]
data <- req.as[User]
nuser <- newUser(data, user.account.collective)
added <- backend.collective.add(nuser)
resp <- Ok(basicResult(added, "User created."))
resp <- Ok(basicResult(added, "User created."))
} yield resp
case req @ PUT -> Root =>
@ -58,12 +58,12 @@ object UserRoutes {
data <- req.as[User]
nuser = changeUser(data, user.account.collective)
update <- backend.collective.update(nuser)
resp <- Ok(basicResult(update, "User updated."))
resp <- Ok(basicResult(update, "User updated."))
} yield resp
case DELETE -> Root / Ident(id) =>
for {
ar <- backend.collective.deleteUser(id, user.account.collective)
ar <- backend.collective.deleteUser(id, user.account.collective)
resp <- Ok(basicResult(ar, "User deleted."))
} yield resp
@ -83,7 +83,7 @@ object UserRoutes {
HttpRoutes.of { case req @ POST -> Root / "resetPassword" =>
for {
input <- req.as[ResetPassword]
input <- req.as[ResetPassword]
result <- backend.collective.resetPassword(input.account)
resp <- Ok(result match {
case OCollective.PassResetResult.Success(np) =>

View File

@ -27,7 +27,7 @@ import yamusca.imports._
object TemplateRoutes {
private[this] val logger = getLogger
val `text/html` = new MediaType("text", "html")
val `text/html` = new MediaType("text", "html")
val `application/javascript` = new MediaType("application", "javascript")
trait InnerRoutes[F[_]] {
@ -41,7 +41,7 @@ object TemplateRoutes {
loadResource("/index.html").flatMap(loadTemplate(_))
)
val docTemplate = memo(loadResource("/doc.html").flatMap(loadTemplate(_)))
val swTemplate = memo(loadResource("/sw.js").flatMap(loadTemplate(_)))
val swTemplate = memo(loadResource("/sw.js").flatMap(loadTemplate(_)))
val dsl = new Http4sDsl[F] {}
import dsl._

View File

@ -36,8 +36,8 @@ object WebjarRoutes {
def appRoutes[F[_]: Async]: HttpRoutes[F] =
Kleisli {
case req if req.method == Method.GET =>
val p = req.pathInfo.renderString
val last = req.pathInfo.segments.lastOption.map(_.encoded).getOrElse("")
val p = req.pathInfo.renderString
val last = req.pathInfo.segments.lastOption.map(_.encoded).getOrElse("")
val containsColon = req.pathInfo.segments.exists(_.encoded.contains(".."))
if (containsColon || !suffixes.exists(last.endsWith(_)))
OptionT.pure(Response.notFound[F])