#!/usr/bin/env python

from argparse import ArgumentParser
from wos.utils import query, doi_to_wos
from wos import WosClient

def main():
    """Main method."""
    parser = ArgumentParser(description='Query the Web of Science.')
    parser.add_argument('--close', action='store_true', help="Close session.")
    subparsers = parser.add_subparsers(help='sub-command help')

    g_auth = parser.add_argument_group('authentication',
                                     'API credentials for premium access.')
    g_auth.add_argument('-u', '--user', type=str, default=None)
    g_auth.add_argument('-p', '--password', type=str, default=None)
    g_auth.add_argument('-s', '--sid', type=str, default=None)

    s_query = subparsers.add_parser('query', help='query the Web of Science.')
    s_query.add_argument('QUERY', help='search query')
    s_query.add_argument('-c', '--count', type=int, default=5)

    s_doi = subparsers.add_parser('doi', help='get the WOS ID from the DOI.')
    s_doi.add_argument('DOI', help='Document Object Identifier')

    s_connect = subparsers.add_parser('connect', help='connect and get an SID.')

    args = parser.parse_args()

    with WosClient(args.user, args.password, args.sid, args.close) as client:
        if 'QUERY' in args:
            print query(client, args.QUERY, '', args.count)
        if 'DOI' in args:
            print doi_to_wos(client, args.DOI)

if __name__ == '__main__':
    main()
