diff 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 diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WebServiceExtensionsV1.1/WebServiceToolWorkflow_REST_SOAP/clients/client_1.py	Tue Jul 05 19:34:18 2011 -0400
@@ -0,0 +1,183 @@
+'''
+@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
+	    from msHandler import *
+
+            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)
+
+	    mshandler = MessageHandler()
+            resultDict={}
+            resultDict=mshandler.flatten(result)   #mshandler.msParser(responseInstance)
+            flat =  nested2flatDict(resultDict)
+		
+	    result=flat
+
+
+            #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();
+