Include last modified time in HEAD

main
Bob Mottram 2022-05-22 21:08:56 +01:00
parent 225f9d9270
commit 5dd2910e11
1 changed files with 14 additions and 2 deletions

View File

@ -871,11 +871,15 @@ class PubServer(BaseHTTPRequestHandler):
self.end_headers() self.end_headers()
def _set_headers_head(self, file_format: str, length: int, etag: str, def _set_headers_head(self, file_format: str, length: int, etag: str,
calling_domain: str, permissive: bool) -> None: calling_domain: str, permissive: bool,
last_modified_time_str: str) -> None:
self._set_headers_base(file_format, length, None, calling_domain, self._set_headers_base(file_format, length, None, calling_domain,
permissive) permissive)
if etag: if etag:
self.send_header('ETag', '"' + etag + '"') self.send_header('ETag', '"' + etag + '"')
if last_modified_time_str:
self.send_header('last-modified',
last_modified_time_str)
self.end_headers() self.end_headers()
def _set_headers_etag(self, media_filename: str, file_format: str, def _set_headers_etag(self, media_filename: str, file_format: str,
@ -18597,6 +18601,7 @@ class PubServer(BaseHTTPRequestHandler):
check_path = self.path check_path = self.path
etag = None etag = None
file_length = -1 file_length = -1
last_modified_time_str = None
if '/media/' in self.path or \ if '/media/' in self.path or \
'/accounts/avatars/' in self.path or \ '/accounts/avatars/' in self.path or \
@ -18642,6 +18647,12 @@ class PubServer(BaseHTTPRequestHandler):
if os.path.isfile(media_filename): if os.path.isfile(media_filename):
check_path = media_filename check_path = media_filename
file_length = os.path.getsize(media_filename) file_length = os.path.getsize(media_filename)
media_tm = os.path.getmtime(media_filename)
last_modified_time = \
datetime.datetime.fromtimestamp(media_tm)
time_format_str = '%a, %d %b %Y %H:%M:%S GMT'
last_modified_time_str = \
last_modified_time.strftime(time_format_str)
media_tag_filename = media_filename + '.etag' media_tag_filename = media_filename + '.etag'
if os.path.isfile(media_tag_filename): if os.path.isfile(media_tag_filename):
try: try:
@ -18672,7 +18683,8 @@ class PubServer(BaseHTTPRequestHandler):
media_file_type = media_file_mime_type(check_path) media_file_type = media_file_mime_type(check_path)
self._set_headers_head(media_file_type, file_length, self._set_headers_head(media_file_type, file_length,
etag, calling_domain, False) etag, calling_domain, False,
last_modified_time_str)
def _receive_new_post_process(self, post_type: str, path: str, headers: {}, def _receive_new_post_process(self, post_type: str, path: str, headers: {},
length: int, post_bytes, boundary: str, length: int, post_bytes, boundary: str,