Mercurial > repos > uga-galaxy-group > webservice_toolsuite_v1_1
view WebServiceExtensionsV1.1/WebServiceToolWorkflow_REST_SOAP/clients/client_1.py~ @ 0:049760c677de default tip
Galaxy WSExtensions added successfully
author | uga-galaxy-group |
---|---|
date | Tue, 05 Jul 2011 19:34:18 -0400 |
parents | |
children |
line wrap: on
line source
''' @author Chaitanya Guttula, Sumedha Ganjoo @see LICENSE (MIT style license file). ''' import warnings with warnings.catch_warnings(): warnings.simplefilter("ignore") import sys import os import urllib """ This script takes the values of the input parameters of the web service from the user and invokes the web service. The URL to the WSDL is the command line argument """ servicetype = sys.argv[2] if servicetype=='SOAP': with warnings.catch_warnings(): warnings.simplefilter("ignore") galaxyhome=os.environ.get('GALAXY_HOME') sys.path.append(galaxyhome+'/tools/WebServiceToolWorkflow_REST_SOAP/clientGenerator/') os.chdir(galaxyhome+'/tools/WebServiceToolWorkflow_REST_SOAP/clientGenerator/') from creatorEngineComplex import * from wsdl2path import * from paramConverter import * from ZSI.writer import SoapWriter webservice = str(sys.argv[3]) operation = str(sys.argv[4]) resultfile=open(sys.argv[1],'w') length=len(sys.argv) inputdict={} i=5 test=ClientCreator() while(i>=5 and i<(length-1)): key=sys.argv[i] print 'key is : ',key #if(sys.argv[i+1]=='ZSI.TC.String'): val=sys.argv[i+1] while(val.find('__at__')>-1): vlist = val.split('__at__') val = '@'.join(vlist) while(val.find('__sq__')>-1): vlist = val.split('__sq__') val = ''.join(vlist) while(val.find('__gt__')>-1): vlist = val.split('__gt__') val = '>'.join(vlist) while(val.find('***')>-1): vlist = val.split('***') val = '\n'.join(vlist) while(val.find('**')>-1): vlist = val.split('**') val = ' '.join(vlist) #if(val.find(',')>-1): # print 'found ,' # vlist = val.split(',') # val = '\',\''.join(vlist) #if(val.find('__sq__')>-1): # j=i+4 # val=val.lstrip('__sq__') # while(str(sys.argv[j]).find('__sq__')==-1): # val=val+' '+sys.argv[j] # j=j+1 #val=val+' '+(str(sys.argv[j]).rstrip('__sq__')) #i=j-3 #elif((sys.argv[i+1]=='ZSI.TC.Integer')or (sys.argv[i+1]=='ZSI.TCnumbers.Iint')): # val=int(sys.argv[i+1]) #elif(sys.argv[i+1]=='ZSI.TC.Decimal'): # val=float(sys.argv[i+1]) #elif(sys.argv[i+2]=='Yes'): # valFile=open(sys.argv[i+3],'r') # val=valFile.read() #else: # val=sys.argv[i+1] if(val != "0"): inputdict[key]= val #resultfile.write('value is :'+ val+'\n') i=i+2 if len(inputdict) == 0: inputdic = {} else: inputdic = flat2nestedDict(inputdict) print 'The operation is : ',operation #added result=test.invokeOp(operation,webservice,inputdic) #resultfile.write(result) # Writing the output to the o/p file when the result is parsed keys = result.keys() #for key in keys: # resultfile.write(str(key)+'\t') #resultfile.write('\n') #for key in keys: # if type(result[key])==list: # for i in result[r]: # resultfile.write(str(i)+'\t') # print str(i) # else: # resultfile.write(str(result[key])+'\t') for r in result: if type(result[r])==list: for i in result[r]: resultfile.write(str(i)+'\n') print str(i) else: resultfile.write(str(result[r])+'\n') #Writes the result without parsinf in the XML format it gets. #sw = SoapWriter(header=False, envelope=False); #res = test.opname2outputClassOb(operation,webservice) #res_tc = getattr(res,'typecode') #ofwhat = res_tc.ofwhat; #for tc in ofwhat : # sw.serialize(getattr(result, tc.aname), tc); # doc = sw.dom.getDocument(); # fp = open(sys.argv[1], 'w'); # try : # doc.writexml(fp, '\t', '', '\n'); # finally : # fp.close(); elif servicetype == 'REST': resUrl = sys.argv[3] outputFile = open(sys.argv[1],'w') if(resUrl.find('__tilda__')>-1): ulist = resUrl.split('__tilda__') resUrl = '~'.join(ulist) paramdict={} length=(len(sys.argv)) print 'in rest',sys.argv #print s i=4 print i while( i>=4 and i<(length-1)): key=sys.argv[i] val=sys.argv[i+1] print 'key : ',key print 'value : ',val while(val.find('**')>-1): vlist = val.split('**') print '---->',val val = ' '.join(vlist) print 'v : ',val paramdict[key]=val i=i+2 print paramdict params = urllib.urlencode(paramdict) data = urllib.urlopen(resUrl, params).read() outputFile.write(data) # #if __name__ == "__main__": # main();