From ea53b09bf3e6a945a28338e3a085433c1e1e9ff2 Mon Sep 17 00:00:00 2001 From: Eneko Nieto Date: Sun, 27 Feb 2022 00:21:35 +0100 Subject: [PATCH] learning api --- build.gradle.kts | 19 +++++++++------- .../config/okupamicoche-appservice.yaml | 4 ++-- gradle.properties | 3 +-- .../okupamicoche/{Application.kt => Main.kt} | 22 ++++++++++++++++--- .../okupamicoche/services/EventTnxService.kt | 7 ++++-- .../okupamicoche/services/RoomService.kt | 12 ++++++---- src/main/resources/logback.xml | 3 ++- 7 files changed, 48 insertions(+), 22 deletions(-) rename src/main/kotlin/eu/fosil/okupamicoche/{Application.kt => Main.kt} (69%) diff --git a/build.gradle.kts b/build.gradle.kts index 0a2cd17..6df2427 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,7 +1,3 @@ -val ktorVersion = "1.6.7" -val kotlinVersion = "1.6.10" - - plugins { application kotlin("jvm") version "1.6.10" @@ -9,15 +5,13 @@ plugins { group = "eu.fosil" version = "0.0.1" -application { - mainClass.set("eu.fosil.okupamicoche.ApplicationKt") -} repositories { mavenCentral() maven { url = uri("https://maven.pkg.jetbrains.space/public/p/ktor/eap") } } +val ktorVersion = "1.6.7" dependencies { // Ktor implementation("io.ktor:ktor-server-netty:$ktorVersion") @@ -27,9 +21,10 @@ dependencies { implementation("net.folivo:trixnity-appservice:1.1.6") // Logger + implementation("io.github.microutils:kotlin-logging-jvm:2.1.21") implementation("ch.qos.logback:logback-classic:1.2.10") - testImplementation("org.jetbrains.kotlin:kotlin-test-junit:$kotlinVersion") + testImplementation("org.jetbrains.kotlin:kotlin-test-junit:1.6.10") } tasks.withType { @@ -38,3 +33,11 @@ tasks.withType { jvmTarget = "11" } } + +tasks.test { + useJUnitPlatform() +} + +application { + mainClass.set("eu.fosil.okupamicoche.MainKt") +} diff --git a/docker/synapse/config/okupamicoche-appservice.yaml b/docker/synapse/config/okupamicoche-appservice.yaml index 654cc3a..f4b4627 100644 --- a/docker/synapse/config/okupamicoche-appservice.yaml +++ b/docker/synapse/config/okupamicoche-appservice.yaml @@ -6,6 +6,6 @@ sender_localpart: "okupamicoche" namespaces: users: [ ] aliases: - - regex: "#viaje_.*" - exclusive: false + - regex: "#viaje.*" + exclusive: true rooms: [ ] diff --git a/gradle.properties b/gradle.properties index 94b6fbc..29e08e8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1 @@ -kotlin.code.style=official -org.gradle.daemon=true \ No newline at end of file +kotlin.code.style=official \ No newline at end of file diff --git a/src/main/kotlin/eu/fosil/okupamicoche/Application.kt b/src/main/kotlin/eu/fosil/okupamicoche/Main.kt similarity index 69% rename from src/main/kotlin/eu/fosil/okupamicoche/Application.kt rename to src/main/kotlin/eu/fosil/okupamicoche/Main.kt index a33003c..61e7fad 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/Application.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/Main.kt @@ -8,11 +8,13 @@ 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 @@ -20,6 +22,8 @@ val matrixClient = MatrixApiClient( baseUrl = Url("http://okupamicoche-synapse:8008/"), ).apply { accessToken.value = "30c05ae90a248a4188e620216fa72e349803310ec83e2a77b34fe90be6081f46" } +private val logger = KotlinLogging.logger {} + suspend fun main() { coroutineScope { val appserviceService = DefaultAppserviceService( @@ -27,17 +31,29 @@ suspend fun main() { ) appserviceService.subscribeAllEvents { - println(it) + logger.debug("All events: $it") } appserviceService.subscribe { if (it is Event.RoomEvent) { - println("${it.content.creator} created ${it.roomId}") + logger.info("${it.content.creator} created room ${it.roomId}") } } appserviceService.subscribe { - println("TextMessageEventContent body=${it.content.body}") + 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?") + ) + } + } } diff --git a/src/main/kotlin/eu/fosil/okupamicoche/services/EventTnxService.kt b/src/main/kotlin/eu/fosil/okupamicoche/services/EventTnxService.kt index 2a7c0a2..6969dc9 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/services/EventTnxService.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/services/EventTnxService.kt @@ -1,15 +1,18 @@ package eu.fosil.okupamicoche.services +import mu.KotlinLogging import net.folivo.trixnity.appservice.rest.event.AppserviceEventTnxService +private val logger = KotlinLogging.logger {} + class EventTnxService : AppserviceEventTnxService { override suspend fun eventTnxProcessingState(tnxId: String): AppserviceEventTnxService.EventTnxProcessingState { - println("eventTnxProcessingState tnxId=$tnxId") + logger.debug("eventTnxProcessingState tnxId=$tnxId") return AppserviceEventTnxService.EventTnxProcessingState.NOT_PROCESSED // return AppserviceEventTnxService.EventTnxProcessingState.PROCESSED } override suspend fun onEventTnxProcessed(tnxId: String) { - println("onEventTnxProcessed tnxId=$tnxId") + logger.debug("onEventTnxProcessed tnxId=$tnxId") } } \ No newline at end of file diff --git a/src/main/kotlin/eu/fosil/okupamicoche/services/RoomService.kt b/src/main/kotlin/eu/fosil/okupamicoche/services/RoomService.kt index cbb6626..81038c1 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/services/RoomService.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/services/RoomService.kt @@ -1,27 +1,31 @@ package eu.fosil.okupamicoche.services import eu.fosil.okupamicoche.matrixClient +import mu.KotlinLogging import net.folivo.trixnity.appservice.rest.room.AppserviceRoomService import net.folivo.trixnity.appservice.rest.room.CreateRoomParameter import net.folivo.trixnity.client.api.MatrixApiClient +import net.folivo.trixnity.client.api.model.rooms.Visibility import net.folivo.trixnity.core.model.RoomAliasId import net.folivo.trixnity.core.model.RoomId +private val logger = KotlinLogging.logger {} + class RoomService : AppserviceRoomService { override val matrixApiClient: MatrixApiClient get() = matrixClient override suspend fun getCreateRoomParameter(roomAlias: RoomAliasId): CreateRoomParameter { - println("getCreateRoomParameter") - return CreateRoomParameter() + logger.info("getCreateRoomParameter") + return CreateRoomParameter(Visibility.PUBLIC) } override suspend fun onCreatedRoom(roomAlias: RoomAliasId, roomId: RoomId) { - println("onCreatedRoom") + logger.info("onCreatedRoom") } override suspend fun roomExistingState(roomAlias: RoomAliasId): AppserviceRoomService.RoomExistingState { - println("roomExistingState") + logger.info("roomExistingState") return AppserviceRoomService.RoomExistingState.DOES_NOT_EXISTS } diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index e573f7d..6bb8417 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -1,7 +1,8 @@ - %d{YYYY-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + %-5level %logger{36} - %msg%n +