0
|
1 '''
|
|
2 @author Chaitanya Guttula, Sumedha Ganjoo
|
|
3 @see LICENSE (MIT style license file).
|
|
4 '''
|
|
5 # To change this template, choose Tools | Templates
|
|
6 # and open the template in the editor.
|
|
7 import warnings
|
|
8 with warnings.catch_warnings():
|
|
9 warnings.simplefilter("ignore")
|
|
10 import sys
|
|
11 import os
|
|
12 import urllib
|
|
13 import time
|
|
14
|
|
15 """
|
|
16
|
|
17 This script takes the values of the input parameters of the
|
|
18 web service from the user and invokes the web service.
|
|
19 The URL to the WSDL is the command line argument
|
|
20
|
|
21 """
|
|
22 servicetype = sys.argv[2]
|
|
23 if servicetype=='SOAP':
|
|
24 galaxyhome=os.environ.get('GALAXY_HOME')
|
|
25 sys.path.append(galaxyhome+'/tools/WebServiceToolWorkflow_REST_SOAP/clientGenerator/')
|
|
26 os.chdir(galaxyhome+'/tools/WebServiceToolWorkflow_REST_SOAP/clientGenerator/')
|
|
27 from creatorEngineComplex import *
|
|
28 from wsdl2path import *
|
|
29 from paramConverter import *
|
|
30 from ZSI.writer import SoapWriter
|
|
31
|
|
32 webservice = str(sys.argv[5])
|
|
33 operation = str(sys.argv[6])
|
|
34 resultfile=open(sys.argv[1],'w')
|
|
35 length=len(sys.argv)
|
|
36 inputdict={}
|
|
37 i=7
|
|
38 test=ClientCreator()
|
|
39 while(i>=7 and i<(length-1)):
|
|
40 key=sys.argv[i]
|
|
41 print 'key is : ',key
|
|
42 #if(sys.argv[i+1]=='ZSI.TC.String'):
|
|
43 val=sys.argv[i+1]
|
|
44 while(val.find('__at__')>-1):
|
|
45 vlist = val.split('__at__')
|
|
46 val = '@'.join(vlist)
|
|
47 while(val.find('__sq__')>-1):
|
|
48 vlist = val.split('__sq__')
|
|
49 val = ''.join(vlist)
|
|
50 while(val.find('__gt__')>-1):
|
|
51 vlist = val.split('__gt__')
|
|
52 val = '>'.join(vlist)
|
|
53 while(val.find('***')>-1):
|
|
54 vlist = val.split('***')
|
|
55 val = '\n'.join(vlist)
|
|
56 while(val.find('**')>-1):
|
|
57 vlist = val.split('**')
|
|
58 val = ' '.join(vlist)
|
|
59 #if(val.find(',')>-1):
|
|
60 # print 'found ,'
|
|
61 # vlist = val.split(',')
|
|
62 # val = '\',\''.join(vlist)
|
|
63
|
|
64
|
|
65 #if(val.find('__sq__')>-1):
|
|
66 # j=i+4
|
|
67 # val=val.lstrip('__sq__')
|
|
68 # while(str(sys.argv[j]).find('__sq__')==-1):
|
|
69 # val=val+' '+sys.argv[j]
|
|
70 # j=j+1
|
|
71 #val=val+' '+(str(sys.argv[j]).rstrip('__sq__'))
|
|
72 #i=j-3
|
|
73
|
|
74 #elif((sys.argv[i+1]=='ZSI.TC.Integer')or (sys.argv[i+1]=='ZSI.TCnumbers.Iint')):
|
|
75 # val=int(sys.argv[i+1])
|
|
76 #elif(sys.argv[i+1]=='ZSI.TC.Decimal'):
|
|
77 # val=float(sys.argv[i+1])
|
|
78 #elif(sys.argv[i+2]=='Yes'):
|
|
79 # valFile=open(sys.argv[i+3],'r')
|
|
80 # val=valFile.read()
|
|
81 #else:
|
|
82 # val=sys.argv[i+1]
|
|
83 if val == 'fileInput':
|
|
84 f = open(sys.argv[i+2])
|
|
85 #line = f.readline()
|
|
86 val = ''
|
|
87 #for j in line:
|
|
88 # val = val+j
|
|
89 #linestripped = line.strip('\n')
|
|
90 for line in f:
|
|
91 #line = f.readline().strip('\n')
|
|
92 #line = line.strip(' ')
|
|
93
|
|
94 val = val+line
|
|
95 val = val.strip("\n")
|
|
96 print val
|
|
97 i = i+1
|
|
98
|
|
99 if(val != "0"):
|
|
100 inputdict[key]= val
|
|
101 #resultfile.write('value is :'+ val+'\n')
|
|
102
|
|
103 i=i+2
|
|
104 if len(inputdict) == 0:
|
|
105 inputdic = {}
|
|
106 else:
|
|
107 inputdic = flat2nestedDict(inputdict)
|
|
108 print 'The webservice is : ',operation,' ',webservice #added
|
|
109 result = None
|
|
110 try:
|
|
111 result = test.invokeOp(operation,webservice,inputdic)
|
|
112 except:
|
|
113 pass
|
|
114 print 'The result before is ',result
|
|
115 while result == None:
|
|
116 time.sleep(2)
|
|
117 print 'in loop'
|
|
118 try:
|
|
119 result = test.invokeOp(operation,webservice,inputdic)
|
|
120 except:
|
|
121 pass
|
|
122 print 'result in loop ',result
|
|
123
|
|
124 print 'The result after is',result
|
|
125
|
|
126 # Writing the output to he o/p file when the result is parsed
|
|
127 for r in result:
|
|
128 if type(result[r])==list:
|
|
129 for i in result[r]:
|
|
130 resultfile.write(str(i)+'\n')
|
|
131 print str(i)
|
|
132 else:
|
|
133 resultfile.write(str(result[r])+'\n')
|
|
134
|
|
135 #Writes the result without parsinf in the XML format it gets.
|
|
136 #sw = SoapWriter(header=False, envelope=False);
|
|
137 #res = test.opname2outputClassOb(operation,webservice)
|
|
138 #res_tc = getattr(res,'typecode')
|
|
139 #ofwhat = res_tc.ofwhat;
|
|
140 #for tc in ofwhat :
|
|
141 # sw.serialize(getattr(result, tc.aname), tc);
|
|
142 # doc = sw.dom.getDocument();
|
|
143 # fp = open(sys.argv[1], 'w');
|
|
144 # try :
|
|
145 # doc.writexml(fp, '\t', '', '\n');
|
|
146 # finally :
|
|
147 # fp.close();
|
|
148
|
|
149
|
|
150 elif servicetype == 'REST':
|
|
151
|
|
152 outputFile = open(sys.argv[1],'w')
|
|
153 resUrl = sys.argv[3]
|
|
154
|
|
155 if(resUrl.find('__tilda__')>-1):
|
|
156 ulist = resUrl.split('__tilda__')
|
|
157 resUrl = '~'.join(ulist)
|
|
158
|
|
159 paramdict={}
|
|
160 length=(len(sys.argv))
|
|
161
|
|
162 i=6
|
|
163 while( i>=6 and i<(length-1)):
|
|
164 key=sys.argv[i]
|
|
165 val=sys.argv[i+1]
|
|
166 if val=='fileInput':
|
|
167 print '##########fileInput found#############'
|
|
168 f=open(sys.argv[i+2])
|
|
169 line = f.readline().strip('\n')
|
|
170 line = line.strip(' ')
|
|
171 val = line
|
|
172 i=i+1
|
|
173
|
|
174 while(val.find('**')>-1):
|
|
175 vlist = val.split('**')
|
|
176 val = ' '.join(vlist)
|
|
177 print key + '\t' + val
|
|
178 paramdict[key]=val
|
|
179 i=i+2
|
|
180
|
|
181 params = urllib.urlencode(paramdict)
|
|
182 data = urllib.urlopen(resUrl, params).read()
|
|
183 outputFile.write(data)
|
|
184 outputFile.close()
|
|
185
|