import asyncio import json import logging import os from flask import Flask, request from flask_restful import Resource, Api from nio import AsyncClient logging.basicConfig(level=logging.INFO) app = Flask(__name__) api = Api(app) MATRIX_HOMESERVER_URL = os.environ.get("MATRIX_HOMESERVER_URL") MATRIX_USER = os.environ.get("MATRIX_USER") MATRIX_PASSWORD = os.environ.get("MATRIX_PASSWORD") MATRIX_ROOM_ID = os.environ.get("MATRIX_ROOM_ID") async def send_message(msg, room_id): client = AsyncClient( MATRIX_HOMESERVER_URL, MATRIX_USER ) await client.login(MATRIX_PASSWORD) await client.room_send( room_id=room_id, message_type="m.room.message", content={"msgtype": "m.text", "body": msg}, ) await client.close() def publish(msg, room_id): asyncio.get_event_loop().run_until_complete(send_message(msg, room_id)) class SendLogs(Resource): def post(self): logging.info(request.data) data = json.loads(request.data) msg = f"{data.get('title', '')}: {data.get('message', '')}" publish(msg, MATRIX_ROOM_ID) return None, 204 api.add_resource(SendLogs, '/')