From 950b9cc542489c5a6a604073b3ccaea6f33e4b5d Mon Sep 17 00:00:00 2001 From: Eneko Nieto Date: Fri, 11 Mar 2022 00:08:50 +0100 Subject: [PATCH] Config file reworked --- src/main/kotlin/eu/fosil/okupamicoche/Main.kt | 16 ++++++++++------ .../eu/fosil/okupamicoche/cli/CommandParser.kt | 13 ++++++++++++- .../eu/fosil/okupamicoche/config/Config.kt | 18 ++++++++++++++---- src/main/resources/config.yaml | 12 ++++++++---- 4 files changed, 44 insertions(+), 15 deletions(-) diff --git a/src/main/kotlin/eu/fosil/okupamicoche/Main.kt b/src/main/kotlin/eu/fosil/okupamicoche/Main.kt index efba08b..435c29c 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/Main.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/Main.kt @@ -27,19 +27,23 @@ suspend fun main() { } val matrixApiClient = MatrixApiClient( - baseUrl = Url(config.homeServerUrl), - ).apply { accessToken.value = config.asToken } + baseUrl = Url( + (if (config.homeserver.secure) "https" else "http") + + "://${config.homeserver.host}:${config.homeserver.port}" + ), + ).apply { accessToken.value = config.tokens.appService } coroutineScope { launch { + val roomMainAlias = "#${config.mainRoom}:${config.homeserver.host}" val roomAliasRes = - matrixApiClient.rooms.getRoomAlias(RoomAliasId(config.mainRoomId)).getOrNull() + matrixApiClient.rooms.getRoomAlias(RoomAliasId(roomMainAlias)).getOrNull() if (roomAliasRes == null) { - logger.info("Creating ${config.mainRoomId} public room") + logger.info("Creating $roomMainAlias public room") matrixApiClient.rooms.createRoom( visibility = Visibility.PUBLIC, - roomAliasId = RoomAliasId(config.mainRoomId) + roomAliasId = RoomAliasId(roomMainAlias) ) } else { val mainRoomId = roomAliasRes.roomId @@ -56,7 +60,7 @@ suspend fun main() { embeddedServer(Netty, port = 8080, host = "0.0.0.0") { matrixAppserviceModule( - properties = MatrixAppserviceProperties(config.hsToken), + properties = MatrixAppserviceProperties(config.tokens.homeserver), appserviceService = createAppService(matrixApiClient) ) }.start(wait = true) diff --git a/src/main/kotlin/eu/fosil/okupamicoche/cli/CommandParser.kt b/src/main/kotlin/eu/fosil/okupamicoche/cli/CommandParser.kt index dc9b177..51f8bc3 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/cli/CommandParser.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/cli/CommandParser.kt @@ -1,10 +1,13 @@ package eu.fosil.okupamicoche.cli +import eu.fosil.okupamicoche.config.ConfigReader.config import eu.fosil.okupamicoche.db import eu.fosil.okupamicoche.model.Travel import io.ktor.http.* import mu.KotlinLogging 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 import net.folivo.trixnity.core.model.UserId import net.folivo.trixnity.core.model.events.m.room.RoomMessageEventContent @@ -64,9 +67,15 @@ object CommandParser { val places = args[4].toIntOrNull() ?: 0 val description = args[5] + val newRoomAliasId = RoomAliasId("#viaje_$origin-${destination}_${date}_$time:${config?.homeserver}") + val newRoomId = matrixApiClient.rooms.createRoom( + visibility = Visibility.PUBLIC, + roomAliasId = newRoomAliasId + ).getOrThrow() + transaction(db) { Travel.new { - this.roomId = roomId.full + this.roomId = newRoomId.full this.driver = userId.full this.origin = origin this.destination = destination @@ -79,12 +88,14 @@ object CommandParser { } } + // Send text message val displayName = matrixApiClient.users.getDisplayName(userId).getOrNull() ?: userId.full matrixApiClient.rooms.sendMessageEvent( roomId, RoomMessageEventContent.TextMessageEventContent("$displayName created a new travel! $origin-$destination on $date $time with $places free places.") ) + // Send new travel event } } \ No newline at end of file diff --git a/src/main/kotlin/eu/fosil/okupamicoche/config/Config.kt b/src/main/kotlin/eu/fosil/okupamicoche/config/Config.kt index 7333d21..7b9fab0 100644 --- a/src/main/kotlin/eu/fosil/okupamicoche/config/Config.kt +++ b/src/main/kotlin/eu/fosil/okupamicoche/config/Config.kt @@ -1,8 +1,18 @@ package eu.fosil.okupamicoche.config data class Config( - val mainRoomId: String, - val homeServerUrl: String, - val asToken: String, - val hsToken: String + val homeserver: HomeserverConfig, + val tokens: TokensConfig, + val mainRoom: String +) + +data class HomeserverConfig( + val host: String, + val secure: Boolean, + val port: Number +) + +data class TokensConfig( + val appService: String, + val homeserver: String ) \ No newline at end of file diff --git a/src/main/resources/config.yaml b/src/main/resources/config.yaml index f85dbfe..af98b32 100644 --- a/src/main/resources/config.yaml +++ b/src/main/resources/config.yaml @@ -1,4 +1,8 @@ -mainRoomId: "#viajes:okupamicoche-synapse" -homeServerUrl: "http://okupamicoche-synapse:8008/" -asToken: "30c05ae90a248a4188e620216fa72e349803310ec83e2a77b34fe90be6081f46" -hsToken: "312df522183efd404ec1cd22d2ffa4bbc76a8c1ccf541dd692eef281356bb74e" +homeserver: + host: okupamicoche-synapse + secure: false + port: 8008 +tokens: + appService: "30c05ae90a248a4188e620216fa72e349803310ec83e2a77b34fe90be6081f46" + homeserver: "312df522183efd404ec1cd22d2ffa4bbc76a8c1ccf541dd692eef281356bb74e" +mainRoom: "viajes"