X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fajax%2FCreatePostAjaxPage.kt;fp=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fajax%2FCreatePostAjaxPage.kt;h=c9bcf48c7b9d9c89932d9c77db122f946c5a7347;hb=cf4ccc7587da36e4a6ba6aa7c04394280b35e271;hp=0000000000000000000000000000000000000000;hpb=6f92f856b4b0afddc207d44a101eff41a403c933;p=Sone.git diff --git a/src/main/kotlin/net/pterodactylus/sone/web/ajax/CreatePostAjaxPage.kt b/src/main/kotlin/net/pterodactylus/sone/web/ajax/CreatePostAjaxPage.kt new file mode 100644 index 0000000..c9bcf48 --- /dev/null +++ b/src/main/kotlin/net/pterodactylus/sone/web/ajax/CreatePostAjaxPage.kt @@ -0,0 +1,34 @@ +package net.pterodactylus.sone.web.ajax + +import net.pterodactylus.sone.data.Sone +import net.pterodactylus.sone.text.TextFilter +import net.pterodactylus.sone.utils.emptyToNull +import net.pterodactylus.sone.utils.headers +import net.pterodactylus.sone.utils.let +import net.pterodactylus.sone.utils.parameters +import net.pterodactylus.sone.web.WebInterface +import net.pterodactylus.sone.web.page.FreenetRequest + +/** + * AJAX handler that creates a new post. + */ +class CreatePostAjaxPage(webInterface: WebInterface) : JsonPage("createPost.ajax", webInterface) { + + override fun createJsonObject(request: FreenetRequest) = + getCurrentSone(request.toadletContext)?.let { sone -> + request.parameters["text"].emptyToNull + ?.let { TextFilter.filter(request.headers["Host"], it) } + ?.let { text -> + val sender = request.parameters["sender"].emptyToNull?.let(webInterface.core::getSone)?.orNull() ?: sone + val recipient = request.parameters["recipient"].let(webInterface.core::getSone) + webInterface.core.createPost(sender, recipient, text).let { post -> + createSuccessJsonObject().apply { + put("postId", post.id) + put("sone", sender.id) + put("recipient", recipient.let(Sone::getId)) + } + } + } ?: createErrorJsonObject("text-required") + } ?: createErrorJsonObject("auth-required") + +}