import sys
import json

from lbrynet.conf import API_CONNECTION_STRING
from jsonrpc.proxy import JSONRPCProxy

help_msg = "Usage: lbrynet-cli method json-args\n" \
             + "Examples: " \
             + "lbrynet-cli resolve_name '{\"name\": \"what\"}'\n" \
             + "lbrynet-cli get_balance\n" \
             + "lbrynet-cli help '{\"function\": \"resolve_name\"}'\n" \
             + "\n******lbrynet-cli functions******\n"


def main():
    api = JSONRPCProxy.from_url(API_CONNECTION_STRING)

    try:
        s = api.is_running()
    except:
        print "lbrynet-daemon isn't running"
        sys.exit(1)

    args = sys.argv[1:]
    meth = args[0]

    msg = help_msg
    for f in api.help():
        msg += f + "\n"

    if meth in ['--help', '-h', 'help']:
        print msg
        sys.exit(1)

    if len(args) > 1:
        if isinstance(args[1], dict):
            params = args[1]
        elif isinstance(args[1], basestring):
            params = json.loads(args[1])
    else:
        params = None

    if meth in api.help():
        try:
            if params:
                r = api.call(meth, params)
            else:
                r = api.call(meth)
            print r
        except:
            print "Something went wrong, here's the usage for %s:" % meth
            print api.help({'function': meth})
    else:
        print "Unknown function"
        print msg


if __name__ == '__main__':
    main()