Example #1
0
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
Example #2
0
	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)