#!/usr/bin/env python
"""Naval Fate.

Usage:
  ltcrabbit-cli worker list (--apikey=<api_key>)
  ltcrabbit-cli user (--apikey=<api_key>)
  ltcrabbit-cli pool (--apikey=<api_key>)
  ltcrabbit-cli -h | --help
  ltcrabbit-cli --version

Options:
  -h --help     Show this screen.
  --version     Show version.
  --apikey=<api_key>      API Key

"""

from ltcrabbit import LtcRabbit, __version__
from prettytable import PrettyTable
from docopt import docopt


def worker_list(api_key):
    ltcrabbit_api = LtcRabbit(api_key)

    data = ltcrabbit_api.get_appdata()

    x = PrettyTable(["Name", "Hashrate", "Active", "Monitoring", "Algo"])

    for row in data['worker']:
        line = [row['name'], row['hashrate'], row['active'], row['monitoring'], row['algo']]
        x.add_row(line)

    print x

def user(api_key):
    ltcrabbit_api = LtcRabbit(api_key)

    data = ltcrabbit_api.get_appdata()

    x = PrettyTable(['Username', 'Balance', 'Hashrate (SCRYPT)', 'Hashrate (X11)', 'Invalid Shares (SCRYPT)', 'Invalid Shares (X11)'])

    row = data['user']

    x.add_row([row['username'], "%s LTC" % row['balance'], "%s KH/s" % row['hashrate_scrypt'],
               "%s KH/s" % row['hashrate_x11'], "%s %%" % row['invalid_shares_scrypt'], "%s %%" % row['invalid_shares_x11']])
    print x


def pool(api_key):
    ltcrabbit_api = LtcRabbit(api_key)

    data = ltcrabbit_api.get_appdata()
    row = data['pool']

    x = PrettyTable(['Hashrate (SCRYPT)', 'Hashrate (X11)', 'Workers', 'LTC MH (SCRYPT)', 'LTC MH (X11)', 'ALT Bonus'])

    x.add_row(["%s KH/s" % row['hashrate_scrypt'], '%s KH/s' % row['hashrate_x11'], row['workers'],
               "%s LTC" % row['ltc_mh_scrypt'],
               "%s LTC" % row['ltc_mh_x11'], "%s %%" % row['alt_bonus']])

    print x

def main(arguments):
    api_key = arguments['--apikey']
    if arguments['worker']:
        if arguments['list']:
            worker_list(api_key)
    elif arguments['user']:
        user(api_key)
    elif arguments['pool']:
        pool(api_key)


if __name__ == '__main__':
    arguments = docopt(__doc__, version='LTCRabbit %s' % __version__)
    main(arguments)