def traceback(self, req): reqparams = lowerparams(req.params) version = reqparams.get('version', None) if not version: version = Version() else: version = Version(version) if version >= '1.3.0': eh = ExceptionHandler130(self.debug) else: eh = ExceptionHandler111(self.debug) response = eh.getresponse(reqparams) req.set_header('Content-Type', response.content_type) req.set_header('Content-Length', str(len(response.content))) req.write(response.content)
def traceback(self, apacheReq, E): reqparams = lowerparams(util.FieldStorage(apacheReq)) version = reqparams.get('version', None) if not version: version = Version() else: version = Version(version) if version >= '1.3.0': eh = ExceptionHandler130(self.debug) else: eh = ExceptionHandler111(self.debug) response = eh.getresponse(reqparams) apacheReq.content_type = response.content_type apacheReq.headers_out.add('Content-Length', str(len(response.content))) apacheReq.send_http_header() apacheReq.write(response.content) return apache.OK
def __call__(self, environ, start_response): reqparams = {} base = True for key, value in parse_qs(environ['QUERY_STRING'], True).items(): reqparams[key.lower()] = value[0] base = False if self.conf.has_option_with_value('service', 'baseurl'): onlineresource = '%s' % self.conf.get('service', 'baseurl') else: # if there is no baseurl in the config file try to guess a valid one onlineresource = 'http://%s%s%s?' % (environ['HTTP_HOST'], environ['SCRIPT_NAME'], environ['PATH_INFO']) try: if not reqparams.has_key('request'): raise OGCException('Missing request parameter.') request = reqparams['request'] del reqparams['request'] if request == 'GetCapabilities' and not reqparams.has_key('service'): raise OGCException('Missing service parameter.') if request in ['GetMap', 'GetFeatureInfo']: service = 'WMS' else: try: service = reqparams['service'] except: service = 'WMS' request = 'GetCapabilities' if reqparams.has_key('service'): del reqparams['service'] try: ogcserver = do_import('ogcserver') except: raise OGCException('Unsupported service "%s".' % service) ServiceHandlerFactory = getattr(ogcserver, service).ServiceHandlerFactory servicehandler = ServiceHandlerFactory(self.conf, self.mapfactory, onlineresource, reqparams.get('version', None)) if reqparams.has_key('version'): del reqparams['version'] if request not in servicehandler.SERVICE_PARAMS.keys(): raise OGCException('Operation "%s" not supported.' % request, 'OperationNotSupported') ogcparams = servicehandler.processParameters(request, reqparams) try: requesthandler = getattr(servicehandler, request) except: raise OGCException('Operation "%s" not supported.' % request, 'OperationNotSupported') # stick the user agent in the request params # so that we can add ugly hacks for specific buggy clients ogcparams['HTTP_USER_AGENT'] = environ.get('HTTP_USER_AGENT', '') response = requesthandler(ogcparams) except: version = reqparams.get('version', None) if not version: version = Version() else: version = Version(version) if version >= '1.3.0': eh = ExceptionHandler130(self.debug,base,self.home_html) else: eh = ExceptionHandler111(self.debug,base,self.home_html) response = eh.getresponse(reqparams) response_headers = [('Content-Type', response.content_type),('Content-Length', str(len(response.content)))] if self.max_age: response_headers.append(('Cache-Control', self.max_age)) start_response('200 OK', response_headers) yield response.content
def process(self, req): base = False if not req.params: base = True reqparams = lowerparams(req.params) if self.conf.has_option_with_value('service', 'baseurl'): onlineresource = '%s' % self.conf.get('service', 'baseurl') else: # if there is no baseurl in the config file try to guess a valid one onlineresource = 'http://%s%s?' % (req.environ['HTTP_HOST'], req.environ['SCRIPT_NAME']) try: if not reqparams.has_key('request'): raise OGCException('Missing request parameter.') request = reqparams['request'] del reqparams['request'] if request == 'GetCapabilities' and not reqparams.has_key( 'service'): raise OGCException('Missing service parameter.') if request in ['GetMap', 'GetFeatureInfo']: service = 'WMS' else: service = reqparams['service'] if reqparams.has_key('service'): del reqparams['service'] try: ogcserver = __import__('ogcserver.' + service) except: raise OGCException('Unsupported service "%s".' % service) ServiceHandlerFactory = getattr(ogcserver, service).ServiceHandlerFactory servicehandler = ServiceHandlerFactory( self.conf, self.mapfactory, onlineresource, reqparams.get('version', None)) if reqparams.has_key('version'): del reqparams['version'] if request not in servicehandler.SERVICE_PARAMS.keys(): raise OGCException('Operation "%s" not supported.' % request, 'OperationNotSupported') ogcparams = servicehandler.processParameters(request, reqparams) try: requesthandler = getattr(servicehandler, request) except: raise OGCException('Operation "%s" not supported.' % request, 'OperationNotSupported') # stick the user agent in the request params # so that we can add ugly hacks for specific buggy clients ogcparams['HTTP_USER_AGENT'] = req.environ['HTTP_USER_AGENT'] response = requesthandler(ogcparams) except: version = reqparams.get('version', None) if not version: version = Version() else: version = Version(version) if version >= '1.3.0': eh = ExceptionHandler130(self.debug, base, self.home_html) else: eh = ExceptionHandler111(self.debug, base, self.home_html) response = eh.getresponse(reqparams) req.set_header('Content-Type', response.content_type) req.set_header('Content-Length', str(len(response.content))) req.write(response.content)
def request_mapnik(self, env, mapdata, que=None): """ render on mapnik request """ if self.mapnik_ver >= 300000: map_obj = mapdata else: map_obj = self.ogcserver_constructor(mapdata) reqparams = {} base = True for key, value in parse_qs(env['QUERY_STRING'], True).items(): reqparams[key.lower()] = value[0] base = False if self.ogcconf.has_option_with_value('service', 'baseurl'): onlineresource = '%s' % self.ogcconf.get('service', 'baseurl') else: onlineresource = 'http://%s%s%s?' % ( env['HTTP_HOST'], env['SCRIPT_NAME'], env['PATH_INFO'] ) try: if not reqparams.has_key('request'): raise OGCException('Missing request parameter.') request = reqparams['request'] del reqparams['request'] if request == 'GetCapabilities' and not reqparams.has_key('service'): raise OGCException('Missing service parameter.') if request in ['GetMap', 'GetFeatureInfo']: service = 'WMS' else: try: service = reqparams['service'] except: service = 'WMS' request = 'GetCapabilities' if reqparams.has_key('service'): del reqparams['service'] ServiceHandlerFactory = getattr(self.ogcserver, service).ServiceHandlerFactory servicehandler = ServiceHandlerFactory( self.ogcconf, map_obj, onlineresource, reqparams.get('version', None) ) if reqparams.has_key('version'): del reqparams['version'] if request not in servicehandler.SERVICE_PARAMS.keys(): raise OGCException( 'Operation "%s" not supported.' % request, 'OperationNotSupported' ) ogcparams = servicehandler.processParameters(request, reqparams) try: requesthandler = getattr(servicehandler, request) except: raise OGCException( 'Operation "%s" not supported.' % request, 'OperationNotSupported' ) ogcparams['HTTP_USER_AGENT'] = env.get('HTTP_USER_AGENT', '') response = requesthandler(ogcparams) except: version = reqparams.get('version', None) if not version: version = Version() else: version = Version(version) if version >= '1.3.0': eh = ExceptionHandler130(self.debug,base,self.home_html) else: eh = ExceptionHandler111(self.debug,base,self.home_html) response = eh.getresponse(reqparams) out_response = (response.content_type, response.content) if que is None: return out_response else: que.put(out_response)