initial commit
This commit is contained in:
63
bridge.py
Normal file
63
bridge.py
Normal file
@@ -0,0 +1,63 @@
|
||||
import asyncio
|
||||
import datetime
|
||||
import logging
|
||||
import os
|
||||
import time
|
||||
import json
|
||||
from ssl import create_default_context
|
||||
from statistics import mean
|
||||
|
||||
from flask import Flask, request
|
||||
from flask_restful import Resource, Api
|
||||
|
||||
# import pytz
|
||||
# import requests
|
||||
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))
|
||||
|
||||
|
||||
# def now():
|
||||
# return (
|
||||
# pytz.utc.localize(datetime.datetime.utcnow())
|
||||
# .astimezone(pytz.timezone("Europe/Brussels"))
|
||||
# .isoformat()
|
||||
# )
|
||||
|
||||
|
||||
class PostEndpoint(Resource):
|
||||
def post(self):
|
||||
logging.info(request.data)
|
||||
data = json.loads(request.data)
|
||||
msg = f"{data.get('title', '<no title>')}: {data.get('message', '<no message>')}"
|
||||
publish(msg, MATRIX_ROOM_ID)
|
||||
return None, 204
|
||||
|
||||
|
||||
api.add_resource(PostEndpoint, '/')
|
||||
Reference in New Issue
Block a user