#!/usr/bin/env python3
#
# Format a result
#

import pscheduler

from validate import result_is_valid
from validate import MAX_SCHEMA

TEMPLATE = '''
{% if _mime_type == 'text/plain' -%}

Time ......... {{ unspec(result.time) }}
{% if spec.record == 'a' -%}
{%- for record in result.record -%}
A ............ {{ record }}
{% endfor -%}

{% elif spec.record == 'aaaa' -%}
{%- for record in result.record -%}
AAAA ......... {{ record }}
{% endfor -%}

{% elif spec.record == 'cname' -%}
CNAME ........ {{ result.record }}

{% elif spec.record == 'mx' -%}
{%- for record in result.record -%}
MX ........... {{ record.mx }} preference {{ record.pref }}
{% endfor -%}

{% elif spec.record == 'ns' -%}
{%- for record in result.record -%}
NS ........... {{ record }}
{% endfor -%}

{% elif spec.record == 'ptr' -%}
PTR .......... {{ result.record }}

{% elif spec.record == 'txt' -%}
{%- for record in result.record -%}
TXT .......... {{ record }}
{% endfor -%}

{% elif spec.record == 'soa' -%}
Retry ........ {{ result.record.retry }}
Refresh ...... {{ result.record.refresh }}
Minimum ...... {{ result.record.minimum }}
Expire ....... {{ result.record.expire }}
Owner ........ {{ result.record.owner }}
Nameserver ... {{ result.record.nameserver }}

{%- endif -%}

{% elif _mime_type == 'text/html' %}
<table>
<tr><td>Time</td><td>{{ unspec(result.time) }}</td></tr>
{% if spec.record == 'a' -%}
<tr><td>A</td><td><ul><li>{{ result.record | join('</li><li>') }}</li></ul></td></tr>

{%- elif spec.record == 'aaaa' -%}
<tr><td>AAAA</td><td><ul><li>{{ result.record | join('</li><li>') }}</li></ul></td></tr>

{%- elif spec.record == 'cname' -%}
<tr><td>CNAME</td><td>{{ result.record }}</td></tr>

{%- elif spec.record == 'mx' -%}
<tr><td>MX</td><td><ul>
{%- for record in result.record -%}
<li>{{ record.mx }} preference {{ record.pref }}</li>
{% endfor -%}
</ul></td></tr>

{%- elif spec.record == 'ns' -%}
<tr><td>NS</td><td><ul><li>{{ result.record | join('</li><li>') }}</li></ul></td></tr>

{%- elif spec.record == 'ptr' -%}
<tr><td>PTR</td><td>{{ result.record }}</td>

{%- elif spec.record == 'txt' -%}
<tr><td>TXT</td><td><ul><li>{{ result.record | join('</li><li>') }}</li></ul></td></tr>

{%- elif spec.record == 'soa' -%}
<tr><td>Retry</td><td>{{ result.record.retry }}</td></tr>
<tr><td>Refresh</td><td>{{ result.record.refresh }}</td></tr>
<tr><td>Minimum</td><td>{{ result.record.minimum }}</td></tr>
<tr><td>Expire</td><td>{{ result.record.expire }}</td></tr>
<tr><td>Owner</td><td>{{ result.record.owner }}</td></tr>
<tr><td>Nameserver</td><td>{{ result.record.nameserver }}</td></tr>
{%- endif %}
</table>
{% else %}

{{ error('Unsupported MIME type "' + _mime_type + '"') }}

{% endif %}
'''

pscheduler.result_format_method(TEMPLATE, max_schema=MAX_SCHEMA, validator=result_is_valid)
