X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fajax%2FMarkAsKnownAjaxPage.kt;fp=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fajax%2FMarkAsKnownAjaxPage.kt;h=beec718be70c4a14844d444799fe90203467e5ee;hp=0000000000000000000000000000000000000000;hb=2ee758b50d597bfd1ec01db720e5b050027c80ea;hpb=5f4783e98cd87731caebfc0902095932e82010f6 diff --git a/src/main/kotlin/net/pterodactylus/sone/web/ajax/MarkAsKnownAjaxPage.kt b/src/main/kotlin/net/pterodactylus/sone/web/ajax/MarkAsKnownAjaxPage.kt new file mode 100644 index 0000000..beec718 --- /dev/null +++ b/src/main/kotlin/net/pterodactylus/sone/web/ajax/MarkAsKnownAjaxPage.kt @@ -0,0 +1,31 @@ +package net.pterodactylus.sone.web.ajax + +import com.google.common.base.Optional +import net.pterodactylus.sone.utils.mapPresent +import net.pterodactylus.sone.utils.parameters +import net.pterodactylus.sone.web.WebInterface +import net.pterodactylus.sone.web.page.FreenetRequest + +/** + * AJAX page that lets the user mark a number of [net.pterodactylus.sone.data.Sone]s, + * [net.pterodactylus.sone.data.Post]s, or [net.pterodactylus.sone.data.Reply]s as known. + */ +class MarkAsKnownAjaxPage(webInterface: WebInterface) : JsonPage("markAsKnown.ajax", webInterface) { + + override fun requiresLogin() = false + + override fun createJsonObject(request: FreenetRequest) = when (request.parameters["type"]) { + "sone" -> processIds(request, webInterface.core::getSone, webInterface.core::markSoneKnown) + "post" -> processIds(request, webInterface.core::getPost, webInterface.core::markPostKnown) + "reply" -> processIds(request, webInterface.core::getPostReply, webInterface.core::markReplyKnown) + else -> createErrorJsonObject("invalid-type") + } + + private fun processIds(request: FreenetRequest, getter: (String) -> Optional, marker: (T) -> Unit) = + request.parameters["id"] + ?.split(Regex(" +")) + ?.mapPresent(getter) + ?.onEach(marker) + .let { createSuccessJsonObject() } + +}