#!/usr/bin/env python
#
# Autogenerated by Thrift Compiler (0.9.2)
#
# 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 pythrift import GalenApiRemoteService
from pythrift.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('  void initialize(string remote_server_addr)')
  print('  Response execute(string session_id, string command, string params)')
  print('  void register_test(string test_name)')
  print('  void append(string test_name, ReportTree report_tree)')
  print('  LayoutCheckReport check_layout(string webdriver_session_id, string specs, tags included_tags, tags excluded_tags)')
  print('  void generate_report(string report_folder_path)')
  print('  i32 active_drivers()')
  print('  void shut_service()')
  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 = GalenApiRemoteService.Client(protocol)
transport.open()

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

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

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

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 == 'check_layout':
  if len(args) != 4:
    print('check_layout requires 4 args')
    sys.exit(1)
  pp.pprint(client.check_layout(args[0],args[1],eval(args[2]),eval(args[3]),))

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

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

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

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

transport.close()
