#!/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 artix.common.py2to3utils 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 syncThrift import CashCommunicationService
from syncThrift.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 load(string loadScript, SyncConfigInfo configInfo)')
  print('  void unload(string unloadScript, string fromDate, string toDate, string shopId, string cashCode, SyncConfigInfo configInfo)')
  print('  void unloadSalesFile(string saleFileZip, SyncSalesProperty salesProperty)')
  print('  ExecuteResult execute(string command, bool isNewThread)')
  print('  void reconfigureSyncProperties(SyncConfigInfo configInfo)')
  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.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 = CashCommunicationService.Client(protocol)
transport.open()

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

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

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

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

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

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

transport.close()
