#!/usr/bin/env python

'''Test script to get image from server'''
import sys
import os
import argparse

sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))

import requests
import json
import logging

def cliParser(argv=None):
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument('-v', '--verbose', dest='verbose', action='store_const', default=False, const=True, help='Enable verbose mode')
    parser.add_argument('-i', '--ip', dest='ip', default='127.0.0.1', help='Web server IP to test (default 127.0.0.1)')
    parser.add_argument('-p', '--port', dest='port', default=8000, help='Web server port (default 8000)')
    args = parser.parse_args(argv)
    return args


def main(args):
    try:
        url = 'http://{:s}:{}/cgi-bin/getimage.py?'.format(args.ip, args.port)
        url = url + 'displayID=5072090&width=264&height=176&'
        url = url + 'rotate=90&temperature=31.0&humidity=2.00&pressure=1.00'
        r = requests.get(url)
        logging.info('Status code: {}'.format(r.status_code))
        logging.info('Content length: {}'.format(len(r.content)))
        logging.info('Headers:\n{}'.format(str(r.headers)))
        logging.info('Answer:\n{}'.format(r.text))
    except KeyboardInterrupt: # pragma: no cover
        return -1
    except Exception as e: # pragma: no cover
        import traceback
        logging.error('Exception: {}\n'.format(e))
        traceback.print_exc(file=sys.stdout)
        return -1
    finally:
        pass
    return 0


############################################################
if __name__ == '__main__': # pragma: no cover
    '''Program entry loading args and start main function'''
    args = cliParser()
    if args.verbose:
        logging.basicConfig(format='%(levelname)-8s: %(message)s', level=logging.DEBUG, stream=sys.stdout)
    else:
        logging.basicConfig(format='%(levelname)-8s: %(message)s', level=logging.INFO, stream=sys.stdout)

    if args.verbose:
        logging.debug("Run " + os.path.basename(__file__) + " with following args:")
        logging.debug(args)
    else:
        logging.info("Run " + os.path.basename(__file__))
    ret = main(args)
    if ret:
        logging.error('Finished {:s} with error {:d}.'.format(os.path.basename(__file__), ret))
    else:
        logging.info('Finished {:s} successfully.'.format(os.path.basename(__file__)))
    sys.exit(abs(ret))
