#!/usr/bin/python

import argparse
import gitsherlock
import json

if __name__ == "__main__":
    parser = argparse.ArgumentParser(
            description="Query GitHub's online endpoints."
            )
    parser.add_argument('--user', metavar='u', type=str, required=True,
                        help='Your GitHub username.')
    parser.add_argument('--token', metavar='t', type=str, required=True,
                        help='Your GitHub authentication token.')
    parser.add_argument('--endpoint', metavar='e', type=str,
                        help='The GitHub endpoint you want to query.')
    parser.add_argument('--method', metavar='m', type=str,
                        help='The HTTP method to use.')
    parser.add_argument('--output', metavar='o', type=str,
                        help='The output data format.')
    parser.add_argument('--target', metavar='r', type=str,
                        help='The request\'s target [API|WEB].')

    args = vars(parser.parse_args())
    endpoint = ""
    method = ""
    output = ""
    target = "API"
    parameters = dict()

    if args['endpoint'] is None:
        endpoint = ""
    else:
        endpoint = args['endpoint']
    if args['method'] is None:
        method = "GET"
    else:
        method = args['method']
    if args['output'] is None:
        output = "JSON"
    else:
        output = args['output']
    if args['target'] is not None:
        target = args['target']

    scraper = gitsherlock.GitSherlock(args['user'], args['token'], target=target)
    scraper.query(endpoint, method=method)

    if target == "WEB":
        print(scraper.result)

    if output == "JSON" and target == "API":
        print(json.dumps(scraper.result))
