From 8597d14408740b1a2b7d894d1d5062d89a0e28e8 Mon Sep 17 00:00:00 2001 From: Eneko Nieto Date: Wed, 2 Mar 2022 00:19:26 +0100 Subject: [PATCH] Create public room --- README.md | 3 +- .../fosil/okupamicoche/AppServiceFactory.kt | 52 ++++++++++++++++ src/main/kotlin/eu/fosil/okupamicoche/Main.kt | 60 ++++--------------- 3 files changed, 67 insertions(+), 48 deletions(-) create mode 100644 src/main/kotlin/eu/fosil/okupamicoche/AppServiceFactory.kt diff --git a/README.md b/README.md index 1beb9f0..07b4948 100644 --- a/README.md +++ b/README.md @@ -2,4 +2,5 @@ Matrix Application Service for Okupa mi coche -http://172.17.0.1:8080/_matrix/app/v1/users/@test34:okupamicoche-synapse?access_token=312df522183efd404ec1cd22d2ffa4bbc76a8c1ccf541dd692eef281356bb74e +## Launch Element with dev profile +`element-desktop --profile omc-dev` diff --git a/src/main/kotlin/eu/fosil/okupamicoche/AppServiceFactory.kt b/src/main/kotlin/eu/fosil/okupamicoche/AppServiceFactory.kt new file mode 100644 index 0000000..ed8d764 --- /dev/null +++ b/src/main/kotlin/eu/fosil/okupamicoche/AppServiceFactory.kt @@ -0,0 +1,52 @@ +package eu.fosil.okupamicoche + +import eu.fosil.okupamicoche.services.EventTnxService +import eu.fosil.okupamicoche.services.RoomService +import eu.fosil.okupamicoche.services.UserService +import io.ktor.http.* +import mu.KotlinLogging +import net.folivo.trixnity.appservice.rest.AppserviceService +import net.folivo.trixnity.appservice.rest.DefaultAppserviceService +import net.folivo.trixnity.client.api.MatrixApiClient +import net.folivo.trixnity.core.model.events.Event +import net.folivo.trixnity.core.model.events.m.room.CreateEventContent +import net.folivo.trixnity.core.model.events.m.room.RoomMessageEventContent + +private val logger = KotlinLogging.logger {} + +val matrixClient = MatrixApiClient( + baseUrl = Url("http://okupamicoche-synapse:8008/"), +).apply { accessToken.value = "30c05ae90a248a4188e620216fa72e349803310ec83e2a77b34fe90be6081f46" } + +fun createAppService(): AppserviceService { + val appserviceService = DefaultAppserviceService( + EventTnxService(), UserService(), RoomService() + ) + + appserviceService.subscribeAllEvents { + logger.debug("All events: $it") + } + appserviceService.subscribe { + if (it is Event.RoomEvent) { + logger.info("${it.content.creator} created room ${it.roomId}") + } + } + appserviceService.subscribe { + if (it is Event.MessageEvent) { + val roomId = it.roomId + logger.info("${it.sender} sent \"${it.content.body}\" on $roomId") + logger.info("$it") + + if (it.content.body.startsWith("!travel")) { + logger.info("send!") + matrixClient.rooms.joinRoom(roomId) + matrixClient.rooms.sendMessageEvent( + roomId, + RoomMessageEventContent.TextMessageEventContent("Te creo un viaje?") + ) + } + } + } + + return appserviceService +} \ No newline at end of file diff --git a/src/main/kotlin/eu/fosil/okupamicoche/Main.kt b/src/main/kotlin/eu/fosil/okupamicoche/Main.kt index 61e7fad..f523aa3 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/Main.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/Main.kt @@ -1,70 +1,36 @@ package eu.fosil.okupamicoche -import eu.fosil.okupamicoche.services.EventTnxService -import eu.fosil.okupamicoche.services.RoomService -import eu.fosil.okupamicoche.services.UserService -import io.ktor.http.* import io.ktor.server.engine.* import io.ktor.server.netty.* import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.launch import mu.KotlinLogging -import net.folivo.trixnity.appservice.rest.DefaultAppserviceService import net.folivo.trixnity.appservice.rest.MatrixAppserviceProperties import net.folivo.trixnity.appservice.rest.matrixAppserviceModule -import net.folivo.trixnity.client.api.MatrixApiClient -import net.folivo.trixnity.core.model.events.Event -import net.folivo.trixnity.core.model.events.MessageEventContent -import net.folivo.trixnity.core.model.events.m.room.CreateEventContent -import net.folivo.trixnity.core.model.events.m.room.RoomMessageEventContent - -val matrixClient = MatrixApiClient( - baseUrl = Url("http://okupamicoche-synapse:8008/"), -).apply { accessToken.value = "30c05ae90a248a4188e620216fa72e349803310ec83e2a77b34fe90be6081f46" } +import net.folivo.trixnity.client.api.model.rooms.Visibility +import net.folivo.trixnity.core.model.RoomAliasId private val logger = KotlinLogging.logger {} suspend fun main() { coroutineScope { - val appserviceService = DefaultAppserviceService( - EventTnxService(), UserService(), RoomService() - ) - - appserviceService.subscribeAllEvents { - logger.debug("All events: $it") - } - - appserviceService.subscribe { - if (it is Event.RoomEvent) { - logger.info("${it.content.creator} created room ${it.roomId}") - } - } - - appserviceService.subscribe { - if (it is Event.MessageEvent) { - val roomId = it.roomId - logger.info("${it.sender} sent \"${it.content.body}\" on $roomId") - - if (it.content.body.startsWith("!travel")) { - logger.info("send!") - matrixClient.rooms.joinRoom(roomId) - matrixClient.rooms.sendMessageEvent( - roomId, - RoomMessageEventContent.TextMessageEventContent("Te creo un viaje?") - ) - } - } - } - - launch { + + val roomAliasRes = matrixClient.rooms.getRoomAlias(RoomAliasId("#viajes:okupamicoche-synapse")).getOrNull() + if (roomAliasRes == null) { + logger.info("Creating #viajes:okupamicoche-synapse public room") + matrixClient.rooms.createRoom( + visibility = Visibility.PUBLIC, + roomAliasId = RoomAliasId("#viajes:okupamicoche-synapse") + ) + } + embeddedServer(Netty, port = 8080, host = "0.0.0.0") { matrixAppserviceModule( properties = MatrixAppserviceProperties("312df522183efd404ec1cd22d2ffa4bbc76a8c1ccf541dd692eef281356bb74e"), - appserviceService = appserviceService + appserviceService = createAppService() ) }.start(wait = true) } - } }