def resolve(self, uri, base=None): scheme = Uri.GetScheme(uri) if not scheme: if base: scheme = Uri.GetScheme(base) if not scheme: #Another option is to fall back to Base class behavior raise Uri.UriException(Uri.UriException.SCHEME_REQUIRED, base=base, ref=uri) func = self.handlers.get(scheme) if not func: func = self.handlers.get(None) if not func: return Uri.UriResolverBase.resolve(self, uri, base) return func(uri, base)
def _resolve_page(self, uri, base): """ URI will be resolved into StringIO with actual page content """ from Ft.Lib import Uri base_uri = self.base_uri if uri.startswith(base_uri): pagename = uri[len(base_uri):] page = Page.Page(self.request, pagename) if page.exists(): result = StringIO.StringIO(page.getPageText().encode( config.charset)) else: raise Uri.UriException(Uri.UriException.RESOURCE_ERROR, loc=uri, msg='Page does not exist') else: result = Uri.UriResolverBase.resolve(self, uri, base) return result
def resolve(self, uri, base=None): scheme = Uri.GetScheme(uri) if scheme == None: if base != None: scheme = Uri.GetScheme(base) if scheme == None: #Another option is to fall back to Base class behavior raise Uri.UriException(Uri.UriException.SCHEME_REQUIRED, base=base, ref=uri) # Add the files path to our sys.path if scheme == 'file': filename = uri[5:] try: index = filename.rindex('\\') sys.path.append(filename[:0 - (index + 1)]) #print "Adding [%s]" % filename[: 0 - (index+1)] except: try: index = filename.rindex('/') sys.path.append(filename[:0 - (index + 1)]) #print "Adding [%s]" % filename[: 0 - (index+1)] except: #print "Adding [.][%s]" % uri sys.path.append('.') try: func = self.handlers.get(scheme) if func == None: func = self.handlers.get(None) if func == None: return Uri.UriResolverBase.resolve(self, uri, base) return func(uri, base) except: if scheme != 'file': raise PeachException("Peach was unable to locate [%s]" % uri) # Lets try looking in our sys.path paths = [] for path in sys.path: paths.append(path) paths.append("%s/Peach/Engine" % path) for path in paths: newuri = uri[:5] + path + '/' + uri[5:] #print "Trying: [%s]" % newuri try: func = self.handlers.get(scheme) if func == None: func = self.handlers.get(None) if func == None: return Uri.UriResolverBase.resolve( self, newuri, base) return func(uri, base) except: pass raise PeachException("Peach was unable to locate [%s]" % uri)