Commit eaac5da4 authored by nimrod's avatar nimrod
Browse files

Actual implementation.

Remove runamel.yaml, json output is available and better.
parent 4b7ba4a5
Loading
Loading
Loading
Loading
Loading
+30 −6
Original line number Diff line number Diff line
"""Anonymous push notification service for Nextcloud."""
# pylint: disable=import-error

import json
import os
import docker
from flask import Flask, request
from ruamel.yaml import YAML


app = Flask(__name__)
client = docker.from_env()
yaml = YAML(typ="safe")


USERNAME = os.getenv("NC_USERNAME", "nimrod")
NAME = os.getenv("NC_NAME", "Nimrod Adar")
CONTAINER_NAME = os.getenv("NC_CONTAINER", "nextcloud_nextcloud_1")


@@ -35,7 +34,32 @@ def send_message():
            message = data
    else:
        message = request.args["message"]
    return message

    # result = container.exec_run(
    #    f"""./occ notification:generate -- {user_id} "{message}"""")
    for c in client.containers.list():  # pylint: disable=invalid-name
        if c.name == CONTAINER_NAME:
            container = c
            break
    else:
        raise RuntimeError(f"Failed to find container {CONTAINER_NAME}.")

    users = json.loads(
        container.exec_run(
            "./occ user:list --output json --info", user="www-data"
        ).output
    )
    for (k, v) in users.items():  # pylint: disable=invalid-name
        if v["display_name"] == NAME:
            uid = k
            break
    else:
        raise RuntimeError(f"Failed to find user {NAME}.")

    result = container.exec_run(
        f"""./occ notification:generate -- {uid} '{message}'""",
        user="www-data",
    )

    if result.exit_code != 0:
        raise RuntimeError(result.output.decode())

    return message
+0 −1
Original line number Diff line number Diff line
docker
flask
gunicorn
ruamel.yaml