Skip to content

Commit f0c9acc

Browse files
committed
Implement report endpoint
1 parent 6c21587 commit f0c9acc

4 files changed

Lines changed: 75 additions & 0 deletions

File tree

library/src/main/kotlin/me/proxer/library/api/messenger/InternalApi.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,8 @@ internal interface InternalApi {
7777
@FormUrlEncoded
7878
@POST("messenger/setunfavour")
7979
fun unmarkConferenceAsFavorite(@Field("conference_id") id: String?): ProxerCall<Unit>
80+
81+
@FormUrlEncoded
82+
@POST("messenger/report")
83+
fun report(@Field("conference_id") id: String?, @Field("text") text: String?): ProxerCall<Unit>
8084
}

library/src/main/kotlin/me/proxer/library/api/messenger/MessengerApi.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,13 @@ class MessengerApi internal constructor(retrofit: Retrofit) {
109109
return ConferenceModificationEndpoint(internalApi, id, ConferenceModification.UNFAVOUR)
110110
}
111111

112+
/**
113+
* Returns the respective endpoint.
114+
*/
115+
fun report(id: String, text: String): ReportConferenceEndpoint {
116+
return ReportConferenceEndpoint(internalApi, id, text)
117+
}
118+
112119
private fun constructMessageFromAction(action: MessageAction, subject: String): String {
113120
require(action != MessageAction.NONE) { "Invalid action: $action" }
114121

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package me.proxer.library.api.messenger
2+
3+
import me.proxer.library.ProxerCall
4+
import me.proxer.library.api.Endpoint
5+
6+
/**
7+
* Endpoint for reporting a conference. The given text is sent to the moderators for investigation.
8+
*
9+
* @author Ruben Gees
10+
*/
11+
class ReportConferenceEndpoint internal constructor(
12+
private val internalApi: InternalApi,
13+
private val conferenceId: String,
14+
private val text: String
15+
) : Endpoint<Unit> {
16+
17+
override fun build(): ProxerCall<Unit> {
18+
return internalApi.report(conferenceId, text)
19+
}
20+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package me.proxer.library.api.messenger
2+
3+
import me.proxer.library.ProxerTest
4+
import me.proxer.library.runRequest
5+
import org.amshove.kluent.shouldBeEqualTo
6+
import org.amshove.kluent.shouldBeNull
7+
import org.junit.jupiter.api.Test
8+
9+
class ReportConferenceEndpointTest : ProxerTest() {
10+
11+
@Test
12+
fun testDefault() {
13+
val (result, _) = server.runRequest("empty.json") {
14+
api.messenger
15+
.report("123", "evil user")
16+
.build()
17+
.execute()
18+
}
19+
20+
result.shouldBeNull()
21+
}
22+
23+
@Test
24+
fun testPath() {
25+
val (_, request) = server.runRequest("empty.json") {
26+
api.messenger.report("123", "test")
27+
.build()
28+
.execute()
29+
}
30+
31+
request.path shouldBeEqualTo "/api/v1/messenger/report"
32+
}
33+
34+
@Test
35+
fun testParameters() {
36+
val (_, request) = server.runRequest("empty.json") {
37+
api.messenger.report("id", "report")
38+
.build()
39+
.execute()
40+
}
41+
42+
request.body.readUtf8() shouldBeEqualTo "conference_id=id&text=report"
43+
}
44+
}

0 commit comments

Comments
 (0)