""" VORegistry Examples Created 2005-06-01 by Shui Hung Kwok, shkwok at computer.org This is a collection of examples to show how to use the VORegistry class. """ Usage=""" VORegistry Examples: Usage: python VORegistryEx.py exampleName parameters ... For example: python VORegistryEx.py example1 URL exampleName can be: getRevisions Invokes the Revisions () method. This example verifies the SOAP communication between server and client. keywordSearch word1 word2 word3 ... Performs a keyword search. printFields word1 word2 ... Similar to keywordSearch, but output names of fields. queryRegistry "perdicate" Invokes the QueryRegistry () method. Result is a list of SimpleResources. predicate can be: "ResourceType like '%CONE%'" Quotes needed to keep the inside quotes. For columns names see http://nvo.stsci.edu/VORegistry/ListColumns.aspx Here are a few one for testing: ResourceType, Title, ShortName, Subject, Description queryResource "predicate" Invokes QueryResource (). Similar to queryRegistry. Result is a list of DBResources. runAll Tests all examples """ VORegWSDL="http://nvo.stsci.edu/VORegistry/registry.asmx?WSDL" import sys from VORegistry import VORegistry from printStruct import printStruct def getRevisions (): """ Tests the SOAP query to VORegistry is working. VORegistry class with no parameters is same as VORegistry (wsdl = VORegistry) """ voregistry = VORegistry () rev = voregistry.Revisions () for s in rev.string: print s def keywordSearch (*strs): """ Performs a keyword search calling the method KwywordSearch, which returns a list of Resources. Content of Resource records varies. This search is good for getting titles and descriptions. """ voregistry = VORegistry () result = voregistry.KeywordSearch (' '.join (strs), 1) try: s = result.Resource try: elem = s.title s = [result.Resource] except: pass except: return for i, res in enumerate (s): try: title = res.title description = res.content.description """ Normally res.interface.accessURL will point to the service """ print print "Resource Nr: %d " % i print "Title: %s " % title print "Description: %s " % description except Exception, e: #print "[%s] %s" % (sys.exc_info ()[2], e) pass def printFields (*strs): """ Similar to keywordSearch, but outputs fields names """ voregistry = VORegistry () result = voregistry.KeywordSearch (' '.join (strs), 1) try: printStruct (result.Resource[0]) except: return def queryRegistry (*strs): """ Invokes QueryRegistry () method, Parameter is a list of words forming a predicate. which returns a list of SimpleResources. """ voregistry = VORegistry () predicate = ' '.join (strs) print 'query = ', predicate result = voregistry.QueryRegistry (predicate) try: s = result.SimpleResource try: elem = s.Title s = [result.SimpleResource] except: pass except: return for i, res in enumerate (s): try: title = res.Title description = res.Description.strip () serviceType = res.ServiceType serviceURL = res.ServiceURL print print "Resource Nr: %d " % i print "Title: %s " % title print "Description: %s " % description print "Service Type: %s ; ServiceURL: %s" % (serviceType, serviceURL) except Exception, e: #print "[%s] %s" % (sys.exc_info ()[2], e) pass def queryResource (*strs): """ Invokes QueryResource () method, which returns a list of DBResource. """ voregistry = VORegistry () predicate = ' '.join (strs) print 'query = ', predicate result = voregistry.QueryResource (predicate) try: list = result.DBResource try: elem = list.Title list = [result.DBResource] except: pass except: return for i, res in enumerate (list): try: title = res.Title description = res.Description.strip ().encode ('ascii', 'ignore') serviceType = res.ResourceType serviceURL = res.ServiceURL.strip () shortName = res.ShortName.strip () coverageSpectral = res.CoverageSpectral.string print print "Resource Nr: %d " % i print "Short Name: %s " % shortName print "Title: %s " % title print "Description: %s " % description print "Coverage Spetral: %s " % coverageSpectral print "Service Type: %s ; ServiceURL: %s" % (serviceType, serviceURL) except Exception, e: #print "[%s] %s" % (sys.exc_info ()[2], e) import traceback traceback.print_exc () return def dumpVOResources (): voregistry = VORegistry () printStruct (voregistry.DumpVOResources ()) def dumpRegistry (): voregistry = VORegistry () printStruct (voregistry.DumpRegistry (), 1024) def runAll (): """ Tests all examples """ print "\nRevisions:\n%s" % ('*' * 40) getRevisions () print "\nKeyword Search:\n%s" % ('*' * 40) keywordSearch ('hubble spitzer') print "\nPrint fields:\n%s" % ('*' * 40) printFields ('hubble spitzer') print "\nQuery Registry:\n%s" % ('*' * 40) queryRegistry ("Resourcetype = 'SSAP'") print "\nQuery Resource:\n%s" % ('*' * 40) queryResource ("Description like '%gravitation%'") pass if __name__ == "__main__": try: try: vars ()[sys.argv[1]](*sys.argv[2:]) except IndexError: vars ()[sys.argv[1]]() except Exception, e: print "Failed to execute example ", e print Usage