#!/usr/bin/env python
#
# Autogenerated by Thrift Compiler (0.9.3)
#
# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
#
#  options string: py
#

import sys
import pprint
from urlparse import urlparse
from thrift.transport import TTransport
from thrift.transport import TSocket
from thrift.transport import TSSLSocket
from thrift.transport import THttpClient
from thrift.protocol import TBinaryProtocol

from hbase import THBaseService
from hbase.ttypes import *

if len(sys.argv) <= 1 or sys.argv[1] == '--help':
  print('')
  print('Usage: ' + sys.argv[0] + ' [-h host[:port]] [-u url] [-f[ramed]] [-s[sl]] function [arg1 [arg2...]]')
  print('')
  print('Functions:')
  print('  bool exists(string table, TGet tget)')
  print('   existsAll(string table,  tgets)')
  print('  TResult get(string table, TGet tget)')
  print('   getMultiple(string table,  tgets)')
  print('  void put(string table, TPut tput)')
  print('  bool checkAndPut(string table, string row, string family, string qualifier, string value, TPut tput)')
  print('  void putMultiple(string table,  tputs)')
  print('  void deleteSingle(string table, TDelete tdelete)')
  print('   deleteMultiple(string table,  tdeletes)')
  print('  bool checkAndDelete(string table, string row, string family, string qualifier, string value, TDelete tdelete)')
  print('  TResult increment(string table, TIncrement tincrement)')
  print('  TResult append(string table, TAppend tappend)')
  print('  i32 openScanner(string table, TScan tscan)')
  print('   getScannerRows(i32 scannerId, i32 numRows)')
  print('  void closeScanner(i32 scannerId)')
  print('  void mutateRow(string table, TRowMutations trowMutations)')
  print('   getScannerResults(string table, TScan tscan, i32 numRows)')
  print('  THRegionLocation getRegionLocation(string table, string row, bool reload)')
  print('   getAllRegionLocations(string table)')
  print('  bool checkAndMutate(string table, string row, string family, string qualifier, TCompareOp compareOp, string value, TRowMutations rowMutations)')
  print('')
  sys.exit(0)

pp = pprint.PrettyPrinter(indent = 2)
host = 'localhost'
port = 9090
uri = ''
framed = False
ssl = False
http = False
argi = 1

if sys.argv[argi] == '-h':
  parts = sys.argv[argi+1].split(':')
  host = parts[0]
  if len(parts) > 1:
    port = int(parts[1])
  argi += 2

if sys.argv[argi] == '-u':
  url = urlparse(sys.argv[argi+1])
  parts = url[1].split(':')
  host = parts[0]
  if len(parts) > 1:
    port = int(parts[1])
  else:
    port = 80
  uri = url[2]
  if url[4]:
    uri += '?%s' % url[4]
  http = True
  argi += 2

if sys.argv[argi] == '-f' or sys.argv[argi] == '-framed':
  framed = True
  argi += 1

if sys.argv[argi] == '-s' or sys.argv[argi] == '-ssl':
  ssl = True
  argi += 1

cmd = sys.argv[argi]
args = sys.argv[argi+1:]

if http:
  transport = THttpClient.THttpClient(host, port, uri)
else:
  socket = TSSLSocket.TSSLSocket(host, port, validate=False) if ssl else TSocket.TSocket(host, port)
  if framed:
    transport = TTransport.TFramedTransport(socket)
  else:
    transport = TTransport.TBufferedTransport(socket)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = THBaseService.Client(protocol)
transport.open()

if cmd == 'exists':
  if len(args) != 2:
    print('exists requires 2 args')
    sys.exit(1)
  pp.pprint(client.exists(args[0],eval(args[1]),))

elif cmd == 'existsAll':
  if len(args) != 2:
    print('existsAll requires 2 args')
    sys.exit(1)
  pp.pprint(client.existsAll(args[0],eval(args[1]),))

elif cmd == 'get':
  if len(args) != 2:
    print('get requires 2 args')
    sys.exit(1)
  pp.pprint(client.get(args[0],eval(args[1]),))

elif cmd == 'getMultiple':
  if len(args) != 2:
    print('getMultiple requires 2 args')
    sys.exit(1)
  pp.pprint(client.getMultiple(args[0],eval(args[1]),))

elif cmd == 'put':
  if len(args) != 2:
    print('put requires 2 args')
    sys.exit(1)
  pp.pprint(client.put(args[0],eval(args[1]),))

elif cmd == 'checkAndPut':
  if len(args) != 6:
    print('checkAndPut requires 6 args')
    sys.exit(1)
  pp.pprint(client.checkAndPut(args[0],args[1],args[2],args[3],args[4],eval(args[5]),))

elif cmd == 'putMultiple':
  if len(args) != 2:
    print('putMultiple requires 2 args')
    sys.exit(1)
  pp.pprint(client.putMultiple(args[0],eval(args[1]),))

elif cmd == 'deleteSingle':
  if len(args) != 2:
    print('deleteSingle requires 2 args')
    sys.exit(1)
  pp.pprint(client.deleteSingle(args[0],eval(args[1]),))

elif cmd == 'deleteMultiple':
  if len(args) != 2:
    print('deleteMultiple requires 2 args')
    sys.exit(1)
  pp.pprint(client.deleteMultiple(args[0],eval(args[1]),))

elif cmd == 'checkAndDelete':
  if len(args) != 6:
    print('checkAndDelete requires 6 args')
    sys.exit(1)
  pp.pprint(client.checkAndDelete(args[0],args[1],args[2],args[3],args[4],eval(args[5]),))

elif cmd == 'increment':
  if len(args) != 2:
    print('increment requires 2 args')
    sys.exit(1)
  pp.pprint(client.increment(args[0],eval(args[1]),))

elif cmd == 'append':
  if len(args) != 2:
    print('append requires 2 args')
    sys.exit(1)
  pp.pprint(client.append(args[0],eval(args[1]),))

elif cmd == 'openScanner':
  if len(args) != 2:
    print('openScanner requires 2 args')
    sys.exit(1)
  pp.pprint(client.openScanner(args[0],eval(args[1]),))

elif cmd == 'getScannerRows':
  if len(args) != 2:
    print('getScannerRows requires 2 args')
    sys.exit(1)
  pp.pprint(client.getScannerRows(eval(args[0]),eval(args[1]),))

elif cmd == 'closeScanner':
  if len(args) != 1:
    print('closeScanner requires 1 args')
    sys.exit(1)
  pp.pprint(client.closeScanner(eval(args[0]),))

elif cmd == 'mutateRow':
  if len(args) != 2:
    print('mutateRow requires 2 args')
    sys.exit(1)
  pp.pprint(client.mutateRow(args[0],eval(args[1]),))

elif cmd == 'getScannerResults':
  if len(args) != 3:
    print('getScannerResults requires 3 args')
    sys.exit(1)
  pp.pprint(client.getScannerResults(args[0],eval(args[1]),eval(args[2]),))

elif cmd == 'getRegionLocation':
  if len(args) != 3:
    print('getRegionLocation requires 3 args')
    sys.exit(1)
  pp.pprint(client.getRegionLocation(args[0],args[1],eval(args[2]),))

elif cmd == 'getAllRegionLocations':
  if len(args) != 1:
    print('getAllRegionLocations requires 1 args')
    sys.exit(1)
  pp.pprint(client.getAllRegionLocations(args[0],))

elif cmd == 'checkAndMutate':
  if len(args) != 7:
    print('checkAndMutate requires 7 args')
    sys.exit(1)
  pp.pprint(client.checkAndMutate(args[0],args[1],args[2],args[3],eval(args[4]),args[5],eval(args[6]),))

else:
  print('Unrecognized method %s' % cmd)
  sys.exit(1)

transport.close()
