#!/usr/bin/python3
# Tento skript se volá při doručování pošty (například pomocí "execute" v Sieve)
# a předá mail webové části OSMO přes /api/email-dsn.

import os
from pathlib import Path
import requests
from requests.exceptions import RequestException
import sys

if len(sys.argv) != 2:
    print('Arguments: <URL of OSMO root>', file=sys.stderr)
    sys.exit(1)

osmo_url = sys.argv[1]
mail = sys.stdin.buffer.read()

key_path = Path.home() / '.config/osmo/dsn-api-key'
try:
    with key_path.open() as f:
        key = f.readline().strip()
        if key == "":
            print(f'Cannot read key from {key_path}', file=sys.stderr)
            sys.exit(1)
except OSError as e:
    print(f'Cannot read {key_path}: {e}', file=sys.stderr)
    sys.exit(1)

try:
    reply = requests.post(
        os.path.join(osmo_url, 'api/email-dsn'),
        data=mail,
        headers={'Authorization': f'Bearer {key}'},
        timeout=30)
except RequestException as e:
    print(f'Error sending DSN: {e}')
    sys.exit(1)

if reply.status_code != 200:
    print(f'Error sending DSN: HTTP status {reply.status_code}')
    sys.exit(1)