from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse, Http404

from pgp import models

def policy(request, domain=None):
    if domain is None:
        domain = request.get_host().rsplit(":", 1)[0]
    return HttpResponse(f"# WKD policy file for {domain}",
                        content_type="text/plain")

def lookup(request, zbase, domain=None):
    if domain is None:
        domain = request.get_host().rsplit(":", 1)[0]

    publickey = get_object_or_404(models.PublicKey,
                                  wkdid=zbase,
                                  email__endswith=f"@{domain}")
    if not request.user.has_perm("pgp.view_publickey", publickey):
        raise Http404()

    publickey._decode()
    encoded = publickey.decoded.ascii_unarmor(str(publickey.decoded))

    return HttpResponse(bytes(encoded["body"]),
                        content_type="application/octet-stream")