From 49e287d2574ed385e31ce3d36cb3cb19f4c7785f Mon Sep 17 00:00:00 2001 From: Julien Cristau Date: Fri, 6 Jul 2018 11:58:52 +0200 Subject: tracker_service: send a Last-Modified header for /tracker/data/json --- bin/tracker_service.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'bin/tracker_service.py') diff --git a/bin/tracker_service.py b/bin/tracker_service.py index 8757d0c4da..7e89c65632 100755 --- a/bin/tracker_service.py +++ b/bin/tracker_service.py @@ -1298,7 +1298,7 @@ Debian bug number.'''), self.json_generation_interval seconds ago """ if self.json_timestamp: # we've generated the JSON at least once - delta = datetime.now() - self.json_timestamp + delta = datetime.utcnow() - self.json_timestamp if delta.total_seconds() <= self.json_generation_interval: # not expired yet, serve the cached data return self.json_data @@ -1450,15 +1450,16 @@ Debian bug number.'''), # store the JSON dump in memory, and update the generation # timestamp before returning - self.json_data = json.dumps(data, separators=(',', ':')) - self.json_timestamp = datetime.now() + new_data = json.dumps(data, separators=(',', ':')) + if new_data != self.json_data: + self.json_data = new_data + self.json_timestamp = datetime.utcnow() return self.json_data def page_json(self, path, params, url): - # FIXME: we want to send along a Last-Modified header, whose - # value will be: - # self.json_timestamp.strftime("%a, %d %b %Y %H:%M:%S ") + TZ - return BinaryResult(self._get_json(),'application/octet-stream') + result = BinaryResult(self._get_json(),'application/octet-stream') + result.headers['Last-Modified'] = self.json_timestamp.strftime("%a, %d %b %Y %H:%M:%S GMT") + return result def page_debsecan(self, path, params, url): obj = '/'.join(path) -- cgit v1.2.3