/[thuban]/branches/WIP-pyshapelib-bramz/Extensions/wms/capabilities.py
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/Extensions/wms/capabilities.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2110 by joey, Tue Mar 16 19:14:56 2004 UTC revision 2150 by joey, Thu Apr 1 14:39:39 2004 UTC
# Line 19  Line 19 
19  """  """
20  Maintain WMS Capabilities  Maintain WMS Capabilities
21    
22    Inherits methods from WMSCapabilitiesParser
23    
24  class WMSCapabilities:  class WMSCapabilities:
25      __init__ (resource xor filename xor nothing)      __init__ (resource xor filename xor nothing)
26    
27      getErrorMsg()      getErrorMsg()
28    
29      fetchCapabilities (*resource)      fetchCapabilities(resource)
30      saveCapabilities (filename)      saveCapabilities(filename)
31      loadCapabilities (filename)      loadCapabilities(filename)
32      printCapabilities ()      printCapabilities()
33    
34        getVersion()
35    
36  Requirements:  Requirements:
37      - PyOGCLib <http://www.sourceforge.net/projects/pyogclib>      - PyOGCLib <http://www.sourceforge.net/projects/pyogclib>
# Line 54  from sys import path Line 58  from sys import path
58    
59  # Assume the PyOGCLib to be checked out next to the thuban main directory  # Assume the PyOGCLib to be checked out next to the thuban main directory
60  pyogclib = "../../../PyOGCLib"  pyogclib = "../../../PyOGCLib"
61  if os.path.isdir (pyogclib) and os.path.isdir (pyogclib + "/ogclib"):  if os.path.isdir(pyogclib) and os.path.isdir(pyogclib + "/ogclib"):
62      path.insert (0, pyogclib)      path.insert(0, pyogclib)
63    
64  # We use gettext, so we need to import it and hence need to adjust the  # We use gettext, so we need to import it and hence need to adjust the
65  # path again  # path again
66  if __name__ == "__main__":  if __name__ == "__main__":
67      path.insert (0, "../../")      path.insert(0, "../../")
68    
69  # ----------------------------------------------------------------------  # ----------------------------------------------------------------------
70    
71  from Thuban import _  from Thuban import _
72    
73  from ogclib.WMSClient import WMSClient  from ogclib.WMSClient import WMSClient
74    from parser import WMSCapabilitiesParser
75    
76  class Capabilities (WMSClient):  class WMSCapabilities(WMSClient, WMSCapabilitiesParser):
77      """      """
78      Thuban class to maintain capabilities.  This class provides      Thuban class to maintain capabilities.  This class provides
79      methods to fetch, save and load capabilities as well as methods to      methods to fetch, save and load capabilities as well as methods to
# Line 85  class Capabilities (WMSClient): Line 90  class Capabilities (WMSClient):
90      errorMsg = None      errorMsg = None
91      wmsVersion = None      wmsVersion = None
92    
93      def __init__ (self, *parm):      def __init__(self, *parm):
94          """          """
95          Initialises Capabilities with one optional parameter          Initialises Capabilities with one optional parameter
96    
97            param can be either a URL or a filename:
98    
99          filename -- load capabilities from file          filename -- load capabilities from file
100          url -- fetch capabilities from network          url -- fetch capabilities from network
101          """          """
102    
103          if parm and parm[0]:          if parm and parm[0]:
104              if os.path.isfile (parm[0]):              if os.path.isfile(parm[0]):
105                  self.loadCapabilities (parm[0])                  self.loadCapabilities(parm[0])
106              else:              else:
107                  if parm[0].find ("http://",0) == 0:                  if parm[0].find("http://", 0) == 0:
108                      self.fetchCapabilities (parm[0])                      self.fetchCapabilities(parm[0])
109                  else:                  else:
110                      self.errorMsg = _("Resource '%s' is neither local file nor URL") % parm[0]                      self.errorMsg \
111                            = _("Resource '%s' is neither local file nor URL") \
112                            % parm[0]
113    
114    
115      def getErrorMsg (self):      def getErrorMsg(self):
116          return self.errorMsg          return self.errorMsg
117    
118    
119      def fetchCapabilities (self, resource):      def fetchCapabilities(self, resource):
120          """Fetches the WMS capabilities from an Internet resource"""          """Fetches the WMS capabilities from an Internet resource"""
121    
122          self.wmsVersion = "1.1"          self.wmsVersion = "1.1"
# Line 115  class Capabilities (WMSClient): Line 124  class Capabilities (WMSClient):
124          if not self.capabilities:          if not self.capabilities:
125              self.wmsVersion = "1.0"              self.wmsVersion = "1.0"
126              self.capabilities = self.getCapabilities(resource, self.wmsVersion)              self.capabilities = self.getCapabilities(resource, self.wmsVersion)
127                if not self.capabilities:
128                    self.wmsVersion = None
129    
130            if self.capabilities:
131                self.grok(self.capabilities)
132    
133    
134      def saveCapabilities (self, fname):      def saveCapabilities(self, fname):
135          """Save capabilities to local file"""          """Save capabilities to local file"""
136    
137          if self.capabilities is None:          if self.capabilities is None:
138              self.errorMsg = _("No capabilities available")              self.errorMsg = _("No capabilities available")
139          else:          else:
140              try:              try:
141                  out = open (fname, "w")                  out = open(fname, "w")
142                  out.write (self.capabilities)                  out.write(self.capabilities)
143                  out.close()                  out.close()
144              except:              except IOError:
145                  self.errorMsg = _("Can't open file '%s' for writing") % fname                  self.errorMsg = _("Can't open file '%s' for writing") % fname
146    
147    
148      def loadCapabilities (self, fname):      def loadCapabilities(self, fname):
149          """Load capabilities from a local file"""          """Load capabilities from a local file"""
150    
151          try:          try:
152              input = open (fname, "r")              input = open(fname, "r")
153              self.capabilities = input.read ()              self.capabilities = input.read()
154              input.close()              input.close()
155          except:              self.grok(self.capabilities)
156            except IOError:
157              self.errorMsg = _("Can't open file '%s' for reading") % fname              self.errorMsg = _("Can't open file '%s' for reading") % fname
158    
159    
160      def printCapabilities (self):      def printCapabilities(self):
161          """Prints capabilities to stdout"""          """Prints capabilities to stdout"""
162    
163          print self.capabilities          print self.capabilities
164    
165    
166        def getVersion(self):
167            """
168            Returns the WMS protocol version
169    
170            If no capabilities could be fetched, None is returned.
171            """
172            return self.wmsVersion
173    
174    
175  if __name__ == "__main__":  if __name__ == "__main__":
176      capa = Capabilities("http://frida.intevation.org/cgi-bin/frida_wms?")      capabilities \
177      if capa.getErrorMsg() is None:          = WMSCapabilities("http://frida.intevation.org/cgi-bin/frida_wms?")
178          capa.saveCapabilities("frida_capabilities.xml")      if capabilities.getErrorMsg() is None:
179            capabilities.saveCapabilities("frida_capabilities.xml")
180      else:      else:
181          print "Error: " + capa.getErrorMsg()          print "Error: " + capabilities.getErrorMsg()

Legend:
Removed from v.2110  
changed lines
  Added in v.2150

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26