def DumpAtom(next, logger, reqdata, environ): resp = next(logger, reqdata, environ) # We are only interested in successful GET requests for Atom # feeds that have a User-Agent header. Do we have one? qs = environ.get('QUERY_STRING', '') ua = environ.get('HTTP_USER_AGENT', '') if qs not in ('atom', 'atomcomments', 'rss2') or \ environ['REQUEST_METHOD'] != 'GET' or \ not ua or resp.code != 200: return resp # This had better not mangle the request! hit = httputil.ifNotModified(environ, resp) # Dump copious information. l = ["UA: '%s'" % ua] present = [] for evar, astr in atomMap: er = environ.get(evar) if er: l.append("%s: '%s'" % (astr, er)) present.append(astr) l.append(hit and "matched" or "no-match") # If we missed, record what *our* values are, so we can see # why we missed. if not hit: if 'INM' in present: l.append("ETag: '%s'" % resp.headers['ETag']) if 'IMS' in present: l.append("LM: '%s'" % resp.headers['Last-Modified']) # Dump out. Note that we don't use the logger interface for # this. logMsg("dwiki debug atomgood: %s\n" % ", ".join(l), environ) return resp
def do_GET(self, logger, environ, start_response): resp = self.callNext(logger, environ) if httputil.ifNotModified(environ, resp): return sendNotModified(resp, start_response) else: return sendResponse(resp, start_response)