#!/usr/bin/env python3

# http://inamidst.com/saxo/
# Created by Sean B. Palmer

import saxo

@saxo.pipe
def head(arg):
    if " " in arg:
        arg, header = arg.split(" ", 1)
    else:
        header = None

    arg = arg if arg else saxo.env("url")
    if not arg:
        return "Please supply a URL"

    page = saxo.request(arg)

    if header == "*":
        result = ", ".join([key for key in page["info"]])
        if len(result) > 256:
            result = result[:256] + "..."
        return result

    if header is not None:
        value = page["headers"].get(header.lower())
        if value is not None:
            return header + ": " + value
        return "No such header"

    values = [str(page["status"])]

    if "mime" in page:
        values.append(page["mime"])

    if "encoding" in page:
        if "encoding-source" in page:
            values.append(page["encoding"] + " (%s)" % page["encoding-source"])
        else:
            values.append(page["encoding"])

    if "last-modified" in page["headers"]:
        values.append("modified " + page["headers"]["last-modified"])

    if "content-length" in page["headers"]:
        values.append(page["headers"]["content-length"] + " bytes")

    return ", ".join(values)
