fe52c9d234289d5f73a4236f881b4ad3291b4eac
[Sone.git] / src / main / kotlin / net / pterodactylus / sone / web / ajax / LikeAjaxPage.kt
1 package net.pterodactylus.sone.web.ajax
2
3 import net.pterodactylus.sone.data.Sone
4 import net.pterodactylus.sone.utils.parameters
5 import net.pterodactylus.sone.web.WebInterface
6 import net.pterodactylus.sone.web.page.FreenetRequest
7 import javax.inject.Inject
8
9 /**
10  * AJAX page that lets the user like a [net.pterodactylus.sone.data.Post].
11  */
12 class LikeAjaxPage @Inject constructor(webInterface: WebInterface) :
13                 LoggedInJsonPage("like.ajax", webInterface) {
14
15         override fun createJsonObject(currentSone: Sone, request: FreenetRequest) =
16                         when (request.parameters["type"]) {
17                                 "post" -> request.parameters["post"]
18                                                 ?.let(core::getPost)
19                                                 ?.let { currentSone.addLikedPostId(it.id) }
20                                                 ?.also { core.touchConfiguration() }
21                                                 ?.let { createSuccessJsonObject() }
22                                                 ?: createErrorJsonObject("invalid-post-id")
23                                 "reply" -> request.parameters["reply"]
24                                                 ?.let(core::getPostReply)
25                                                 ?.let { currentSone.addLikedReplyId(it.id) }
26                                                 ?.also { core.touchConfiguration() }
27                                                 ?.let { createSuccessJsonObject() }
28                                                 ?: createErrorJsonObject("invalid-reply-id")
29                                 else -> createErrorJsonObject("invalid-type")
30                         }
31
32
33 }