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

import pscheduler
import sys

from validate import result_is_valid


try:
   format = sys.argv[1]
except IndexError:
   format = 'text/plain'

input = pscheduler.json_load(exit_on_error=True)

valid, message = result_is_valid(input["result"])

if not valid:
    pscheduler.fail(message)

result = input["result"]
spec = input["spec"]

if format == 'text/plain':
   print('Time: %s\n' % result['time'])
   print('Data:')
   for i in range(len(result['data'])):
       print('OID: %s\t' % spec['oidargs'][i]['oid'])
       try:
           print('Type: %s\t' % result['data'][i]['type'])
           print('Value: %s\n' % result['data'][i]['value'])
       except KeyError:
           print('Error: %s\n' % result['data'][i]['value'])
   
elif format == 'text/html':
    print('<table>')
    print('    <tr>')
    print('        <th>Time</th>')
    print('    </tr>')
    print('    <tr>')
    print('        <td>%s</td>' % result['time'])
    print('    </tr>')
    print('    <tr>')
    print('        <th>SNMP Data</th>')
    print('    </tr>')
    for index, item in enumerate(result['data']):
        print('<tr>')
        print('    <td>OID: %s\t </td>' % spec['oidargs'][index]['oid'])
        try:
            print('<td>Type: %s\t </td>' % item['type'])
            print('<td>Value: %s\n</td>' % item['value'])
        except KeyError:
            print('<td>Error: %s\n</td>' % item['value'])       
        print('</tr>')

    print('</table>')


else:
   pscheduler.fail("Unsupported format '%s'" % format)
