forked from LBRYCommunity/lbry-sdk
103 lines
2.9 KiB
Python
103 lines
2.9 KiB
Python
import sys
|
|
import argparse
|
|
import json
|
|
from lbrynet.conf import settings
|
|
from lbrynet.lbrynet_daemon.auth.client import LBRYAPIClient
|
|
from jsonrpc.common import RPCError
|
|
|
|
|
|
|
|
help_msg = "Usage: lbrynet-cli method kwargs\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 guess_type(x):
|
|
if '.' in x:
|
|
try:
|
|
return float(x)
|
|
except ValueError:
|
|
# not a float
|
|
pass
|
|
try:
|
|
return int(x)
|
|
except ValueError:
|
|
return x
|
|
|
|
|
|
def get_params_from_kwargs(params):
|
|
params_for_return = {}
|
|
for i in params:
|
|
eq_pos = i.index('=')
|
|
k, v = i[:eq_pos], i[eq_pos+1:]
|
|
params_for_return[k] = guess_type(v)
|
|
return params_for_return
|
|
|
|
|
|
def main():
|
|
api = LBRYAPIClient.config()
|
|
|
|
try:
|
|
status = api.daemon_status()
|
|
assert status.get('code', False) == "started"
|
|
except Exception:
|
|
try:
|
|
settings.update({'use_auth_http': not settings.use_auth_http})
|
|
api = LBRYAPIClient.config()
|
|
status = api.daemon_status()
|
|
assert status.get('code', False) == "started"
|
|
except Exception:
|
|
print "lbrynet-daemon isn't running"
|
|
sys.exit(1)
|
|
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument('method', nargs=1)
|
|
parser.add_argument('params', nargs=argparse.REMAINDER, default=None)
|
|
args = parser.parse_args()
|
|
|
|
meth = args.method[0]
|
|
params = {}
|
|
|
|
if len(args.params) > 1:
|
|
params = get_params_from_kwargs(args.params)
|
|
elif len(args.params) == 1:
|
|
try:
|
|
params = json.loads(args.params[0])
|
|
except ValueError:
|
|
params = get_params_from_kwargs(args.params)
|
|
|
|
msg = help_msg
|
|
for f in api.help():
|
|
msg += f + "\n"
|
|
|
|
if meth in ['--help', '-h', 'help']:
|
|
print msg
|
|
sys.exit(1)
|
|
|
|
if meth in api.help():
|
|
try:
|
|
if params:
|
|
result = LBRYAPIClient.config(service=meth, params=params)
|
|
else:
|
|
result = LBRYAPIClient.config(service=meth, params=params)
|
|
print json.dumps(result, sort_keys=True)
|
|
except RPCError as err:
|
|
# TODO: The api should return proper error codes
|
|
# and messages so that they can be passed along to the user
|
|
# instead of this generic message.
|
|
# https://app.asana.com/0/158602294500137/200173944358192
|
|
print "Something went wrong, here's the usage for %s:" % meth
|
|
print api.help({'function': meth})
|
|
print "Here's the traceback for the error you encountered:"
|
|
print err.msg
|
|
|
|
else:
|
|
print "Unknown function"
|
|
print msg
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|