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

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

from elephantdb import ElephantDBShared
from elephantdb.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]] function [arg1 [arg2...]]'
  print ''
  print 'Functions:'
  print '  DomainStatus getDomainStatus(string domain)'
  print '   getDomains()'
  print '  Status getStatus()'
  print '  bool isFullyLoaded()'
  print '  bool isUpdating()'
  print '  bool update(string domain)'
  print '  bool updateAll()'
  print '  i64 getCount(string domain)'
  print '  DomainMetaData getDomainMetaData(string domain)'
  print '  MetaData getMetaData()'
  print ''
  sys.exit(0)

pp = pprint.PrettyPrinter(indent = 2)
host = 'localhost'
port = 9090
uri = ''
framed = 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

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

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

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

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

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

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

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

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

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

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

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

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

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

transport.close()
