00001 #!perl
00002 #---------------------------------------------------
00003 # WSPerlClient.pl
00004 #
00005 # Project: PDBe API Framework
00006 # Module: Perl Client for PDBe API Webservice (SOAP) Server
00007 #
00008 # SOAP User Layer
00009 # Last updated: 25 February 2004 10:17
00010 # (C) Siamak Sobhany
00011 #---------------------------------------------------
00012
00013
00014 use SOAP::Lite;
00015 use IO::File;
00016 my $service = SOAP::Lite
00017 ->uri('urn:msd_soap_service')
00018 ->proxy('http:
00019 #->proxy('http:
00020 my $sessionid = 'my_session1';
00021 my $connName = 'MyPerlConnection';
00022 my $queryName1 = 'MyPerlQuery1';
00023 my $resName1 = 'MyPerlResult1';
00024 my $queryName2 = 'MyPerlQuery2';
00025 my $resName2 = 'MyPerlResult2';
00026 my $buf=50;
00027 my $ssmQuery = '<SSMInput> <query> <type>PDB entry</type> <pdbcode>9xia</pdbcode>'.
00028 '</query> <target> <type>PDB archive</type>'.
00029 '</target> <selection> <type>Chain(s)</type>'.
00030 '<chains>*(all)</chains> </selection> <percent1>70</percent1>'.
00031 '<percent2>70</percent2> <sepchains>Yes</sepchains>'.
00032 '<connectivity>Yes</connectivity> <bestmatch>Yes</bestmatch>'.
00033 '<uniquematch>Yes</uniquematch> <precision>Normal</precision>'.
00034 '<sorting>RMSD</sorting> </SSMInput>';
00035
00036 my $sqlSSMQuery = 'select s.target_id from ssm_out_tab s where s.session_id = \''. $sessionid .'\'';
00037
00038 my $sqlQuery = 'select e.entry_id, e.accession_code from entry e, author a '.
00039 ' where e.res_val <= 2.5 and e.entry_id = a.entry_id '.
00040 'and a.last_name = \'HENRICK\' and e.accession_code in ( '. $sqlSSMQuery . ')';
00041
00042
00043 ## select lower(h.accession_code) from hetgroup h where h.chem_comp_code like 'AL%'
00044
00045
00046 my $array = [$ssmQuery , $sessionid];
00047 print "\nCalling method: msdSSM()\n";
00048 my $result1 = $service->msdSSM(SOAP::Data->name('numofpars' => 2),
00049 SOAP::Data->name('in-params' => $array));
00050 unless ($result1->fault) {
00051 print "\nmsdSSM() called successfully.\n";
00052 print $result1->result();
00053 }else{
00054 print join ', ',
00055 $result1->faultcode,
00056 $result1->faultstring;
00057 }
00058 for ($i=1; $i > 0 ; $i++)
00059 { my $result2 = $service->msdSSMParser(SOAP::Data->name('diyf')->type('xsd:int')->value(1),
00060 SOAP::Data->name('sessionid')->type('xsd:string')->value($sessionid));
00061 unless ($result2->fault || ($result2->faultstring != 'Result fille not ready')) {
00062 $i=-1;
00063 print $result2->result();
00064 }else{
00065 print join ', ',
00066 "\nXML File not ready...retry: $i ",
00067 $result2->faultcode,
00068 $result2->faultstring;
00069 }
00070 sleep(5);
00071 }
00072 my $result3 = $service->msdSSMPurge(SOAP::Data->name('sessionid')->type('xsd:string')->value($sessionid));
00073 unless ($result3->fault) {
00074 print "\nmsdSSMPurge() called successfully.\n";
00075 print $result3->result();
00076 }else{
00077 print join ', ',
00078 $result3->faultcode,
00079 $result3->faultstring;
00080 }
00081 print "\nCalling method: msdConnect() 1 \n";
00082 my $result1 = $service->msdConnect(SOAP::Data->name('conn-name')->type('xsd:string')->value($connName));
00083
00084 unless ($result1->fault) {
00085 print "\nmsdConnect() 1 called successfully.\n";
00086 print $result1->result();
00087 }else{
00088 print join ', ',
00089 $result1->faultcode,
00090 $result1->faultstring;
00091 }
00092 print "\nCalling method: msdResultset() 1\n";
00093 my $result2 = $service->msdResultset(SOAP::Data->name('conn-name')->type('xsd:string')->value($connName),
00094 SOAP::Data->name('query-name')->type('xsd:string')->value($queryName1),
00095 SOAP::Data->name('res-name')->type('xsd:string')->value($resName1));
00096
00097 unless ($result2->fault) {
00098 print "\nmsdResultset() 1 called successfully.\n";
00099 print $result2->result();
00100 }else{
00101 print join ', ',
00102 $result2->faultcode,
00103 $result2->faultstring;
00104 }
00105
00106 print "\nCalling method: msdQuery() 1\n";
00107 my $result3 = $service->msdQuery(SOAP::Data->name('conn-name' => $connName),
00108 SOAP::Data->name('query-name'=> $queryName1),
00109 SOAP::Data->name('result-name'=> $resName1),
00110 SOAP::Data->name('stm'=> $sqlQuery));
00111
00112 unless ($result3->fault) {
00113 print "\nmsdQuery() 1 called successfully.\n";
00114 print $result3->result();
00115 }else{
00116 print join ', ',
00117 $result3->faultcode,
00118 $result3->faultstring;
00119 }
00120
00121
00122 print "\nCalling method: msdResultset() 2 \n";
00123 my $result4 = $service->msdResultset(SOAP::Data->name('conn-name')->type('xsd:string')->value($connName),
00124 SOAP::Data->name('query-name')->type('xsd:string')->value($queryName2),
00125 SOAP::Data->name('res-name')->type('xsd:string')->value($resName2));
00126
00127 unless ($result4->fault) {
00128 print "\nmsdResultset() 2 called successfully.\n";
00129 print $result4->result();
00130 }else{
00131 print join ', ',
00132 $result4->faultcode,
00133 $result4->faultstring;
00134 }
00135
00136 print "\nCalling method: msdQuery() 2\n";
00137 my $result5 = $service->msdQuery(SOAP::Data->name('conn-name' => $connName),
00138 SOAP::Data->name('query-name'=> $queryName2),
00139 SOAP::Data->name('result-name'=> $resName2),
00140 SOAP::Data->name('stm'=> $sqlSSMQuery));
00141
00142 unless ($result5->fault) {
00143 print "\nmsdQuery() 2 called successfully.\n";
00144 print $result5->result();
00145 }else{
00146 print join ', ',
00147 $result5->faultcode,
00148 $result5->faultstring;
00149 }
00150
00151
00152 print "\nCalling method: msdExecQuery() 1 \n";
00153 my $result6 = $service->msdExecQuery(SOAP::Data->name('conn-name' => $connName),
00154 SOAP::Data->name('query-name'=> $queryName1),
00155 SOAP::Data->name('result-name'=> $resName1),
00156 SOAP::Data->name('buf'=> $buf));
00157
00158
00159 unless ($result6->fault) {
00160 print "\nmsdExecQuery() 1 called successfully.\n";
00161 print $result6->result();
00162
00163 }else{
00164 print join ', ',
00165 $result6->faultcode,
00166 $result6->faultstring;
00167 }
00168
00169 print "\nCalling method: msdExecQuery() 2 \n";
00170 my $result7 = $service->msdExecQuery(SOAP::Data->name('conn-name' => $connName),
00171 SOAP::Data->name('query-name'=> $queryName2),
00172 SOAP::Data->name('result-name'=> $resName2),
00173 SOAP::Data->name('buf'=> $buf));
00174
00175
00176 unless ($result7->fault) {
00177 print "\nmsdExecQuery() 2 called successfully.\n";
00178 print $result7->result();
00179
00180 }else{
00181 print join ', ',
00182 $result7->faultcode,
00183 $result7->faultstring;
00184 }
00185
00186 print "\nCalling method: msdGetResultSet() 1 \n";
00187 my $result8 = $service->msdGetResultSet(SOAP::Data->name('conn-name' => $connName),
00188 SOAP::Data->name('query-name'=> $queryName1),
00189 SOAP::Data->name('result-name'=> $resName1));
00190 $col =1;
00191 unless ($result8->fault) {
00192 print "\nmsdGetResultSet() 1 called successfully.\n";
00193 #print $result5->result();
00194 my $dataSet = $result8->result();
00195 $record_set = $dataSet;
00196
00197 foreach my $rec (@$record_set) {
00198 $row=1;
00199 foreach my $val (@$rec) {
00200 print "Column ", $col ," Row: ", $row, " value = " ;
00201 print $val, "\n";
00202
00203 $row++;
00204 }
00205 $col++;
00206 }
00207
00208 }else{
00209 print join ', ',
00210 $result8->faultcode,
00211 $result8->faultstring;
00212 }
00213
00214 print "\nCalling method: msdGetResultSet() 2 \n";
00215 my $result9 = $service->msdGetResultSet(SOAP::Data->name('conn-name' => $connName),
00216 SOAP::Data->name('query-name'=> $queryName2),
00217 SOAP::Data->name('result-name'=> $resName2));
00218 $col =1;
00219 unless ($result9->fault) {
00220 print "\nmsdGetResultSet() 2 called successfully.\n";
00221 #print $result9->result();
00222 my $dataSet = $result9->result();
00223 $record_set = $dataSet;
00224
00225 foreach my $rec (@$record_set) {
00226 $row=1;
00227 foreach my $val (@$rec) {
00228 print "Column ", $col ," Row: ", $row, " value = " ;
00229 print $val, "\n";
00230
00231 $row++;
00232 }
00233 $col++;
00234 }
00235
00236 }else{
00237 print join ', ',
00238 $result9->faultcode,
00239 $result9->faultstring;
00240 }
00241
00242
00243 print "\nCalling method: msdEndQueryPack() 1\n";
00244 my $result10 = $service->msdEndQueryPack(SOAP::Data->name('query-name')->type('xsd:string')->value($queryName1),
00245 SOAP::Data->name('result-name')->type('xsd:string')->value($resName1));
00246
00247 unless ($result10->fault) {
00248 print "\nmsdEndQueryPack() 1 called successfully.\n";
00249 print $result10->result();
00250 }else{
00251 print join ', ',
00252 $result10->faultcode,
00253 $result10->faultstring;
00254 }
00255
00256 print "\nCalling method: msdEndQueryPack() 2\n";
00257 my $result11 = $service->msdEndQueryPack(SOAP::Data->name('query-name')->type('xsd:string')->value($queryName2),
00258 SOAP::Data->name('result-name')->type('xsd:string')->value($resName2));
00259
00260 unless ($result11->fault) {
00261 print "\nmsdEndQueryPack() 2 called successfully.\n";
00262 print $result11->result();
00263 }else{
00264 print join ', ',
00265 $result11->faultcode,
00266 $result11->faultstring;
00267 }
00268
00269
00270 print "\nCalling method: msdEndConnect() \n";
00271 my $result12 = $service->msdEndConnect(SOAP::Data->name('conn-name')->type('xsd:string')->value($connName));
00272
00273 unless ($result12->fault) {
00274 print "\nmsdEndConnect() called successfully.\n";
00275 print $result12->result();
00276 }else{
00277 print join ', ',
00278 $result12->faultcode,
00279 $result12->faultstring;
00280 }
00281
00282 print "\nCalling method: msdEndSession() \n";
00283 my $result13 = $service->msdEndSession(SOAP::Data->name('sessionid')->type('xsd:string')->value($sessionid));
00284
00285 unless ($result13->fault) {
00286 print "\nmsdEndSession() called successfully.\n";
00287 print $result13->result();
00288 }else{
00289 print join ', ',
00290 $result13->faultcode,
00291 $result13->faultstring;
00292 }
00293
00294 ############## Google api calls
00295
00296 my $key='fGeTRvdQFHLfeNjYlcoRt13M6mKs4SgT';
00297 my $query="KIM HENRICK and 9xia";
00298 my $googleSearch = SOAP::Lite -> service("http://api.google.com/GoogleSearch.wsdl"); #"file:googleapi/GoogleSearch.wsdl"
00299 my $result14 = $googleSearch -> doGoogleSearch($key, $query, 0, 10, "false", "", "false", "", "latin1", "latin1");
00300
00301 print"Google API search:\n";
00302 print "\nAbout ", $result14->{'estimatedTotalResultsCount'}, " results.\n";
00303 print "\n";
00304 my $resEls = $result14->{'resultElements'};
00305 foreach my $resEl (@$resEls) {
00306 print "\nTitle:\n",$resEl->{'title'}, "\n";
00307 print "URL:\n",$resEl->{'URL'}," \n";
00308 }
00309 my $result15 = $googleSearch -> doSpellingSuggestion($key, $query);
00310 print "\nDid you mean: \'", $result15 , "\'?\n";
00311