all repos — donkey @ 924f43708d675e88632f81eb607a680c353f562d

The main backend for forlater.email

app/main.py (view raw)

 1from flask import Flask, request, current_app as app
 2
 3from .html import process_urls, fetch_page, fetch_plaintext
 4from .mail import send_mail
 5
 6
 7@app.route("/webhook", methods=["POST"])
 8def webhook():
 9    mail = request.json
10    parts = mail["Parts"]
11    try:
12        p = parts[0]["text/plain"]
13        urls = process_urls(p)
14    except KeyError:
15        p = parts[0]["text/html"]
16        urls = process_urls(p, html=True)
17
18    for u in urls:
19        pageinfo = fetch_page(u)
20        text = fetch_plaintext(pageinfo["html"])
21        send_mail(
22            mail["From"].strip(),
23            mail["ReplyTo"].strip(),
24            u + ": " + pageinfo["title"].strip(),
25            pageinfo["html"].strip(),
26            text,
27        )
28    return "ok"