import re

from odoo import http
from odoo.http import request


class MailMailgun(http.Controller):
    @http.route("/mailgun/notify", auth="public", type="http", csrf=False)
    def mailgun_notify(self, **kw):
        # mailgun notification in json format
        message_url = kw.get("message-url")
        if not re.match("^https://[^/]*api.mailgun.net/", message_url):
            # simple security check failed
            raise Exception("wrong message-url")
        request.env["mail.thread"].sudo().mailgun_fetch_message(message_url)
        return "ok"