def send_head(self): if not self.path.startswith(baseurl): self.send_error(404, 'File not found') return None self.path = self.path[len(baseurl):] if not self.path.startswith('/'): self.path = '/' + self.path return SimpleHTTPRequestHandler.send_head(self)
def send_head(self): # We override this and handle the directory redirection case because # we want to include the per-split prefix. path = self.translate_path(self.path) if os.path.isdir(path): if not self.path.endswith('/'): self.send_response(302) self.send_header("Location", self.prefix + self.path + "/") self.end_headers() return None return SimpleHTTPRequestHandler.send_head(self)
def send_head(self): if (self.server._URL_HTML is not None) and \ (self.translate_path(self.path).endswith(self.server._URL_HTML)): f = io.BytesIO() f.write(self.server._STR_HTML.encode('utf8')) length = f.tell() f.seek(0) self.send_response(200) self.send_header("Content-type".encode('utf8'), "text/html".encode('utf8')) self.send_header("Content-Length".encode('utf8'), str(length).encode('utf8')) self.end_headers() return f else: return SimpleHTTPRequestHandler.send_head(self)
def send_head(self): if 'Range' not in self.headers: self.range = None return SimpleHTTPRequestHandler.send_head(self) try: self.range = parse_byte_range(self.headers['Range']) except ValueError as e: err_string = 'Invalid byte range with: ' + e self.send_error(400, err_string) return None first, last = self.range # Mirroring SimpleHTTPServer.py here path = self.translate_path(self.path) f = None ctype = self.guess_type(path) try: f = open(path, 'rb') except IOError: self.send_error(404, 'File not found') return None fs = os.fstat(f.fileno()) file_len = fs[6] if first >= file_len: self.send_error(416, 'Requested Range Not Satisfiable') return None self.send_response(206) self.send_header('Content-type', ctype) self.send_header('Accept-Ranges', 'bytes') if last is None or last >= file_len: last = file_len - 1 response_length = last - first + 1 self.send_header('Content-Range', 'bytes %s-%s/%s' % (first, last, file_len)) self.send_header('Content-Length', str(response_length)) self.send_header('Last-Modified', self.date_time_string(fs.st_mtime)) self.end_headers() return f
def send_head(self): """Common code for GET and HEAD commands. Return value is either a file object or None """ path = self.translate_path(self.path) ctype = self.guess_type(path) # Handling file location # If directory, let SimpleHTTPRequestHandler handle the request if os.path.isdir(path): return SimpleHTTPRequestHandler.send_head(self) # Handle file request f = open(path, 'rb') fs = os.fstat(f.fileno()) size = fs[6] start, end = 0, size - 1 if 'Range' in self.headers: start, end = self.headers.get('Range').strip().strip( 'bytes=').split('-') start = int(start) end = int(end) # Correct the values of start and end start = max(start, 0) end = min(end, size - 1) self.range = (start, end) # Setup headers and response length = end - start + 1 self.send_response(206) self.send_header('Content-type', ctype) self.send_header('Accept-Ranges', 'bytes') self.send_header('Content-Range', 'bytes %s-%s/%s' % (start, end, size)) self.send_header('Content-Length', str(length)) self.send_header('Last-Modified', self.date_time_string(fs.st_mtime)) self.end_headers() return f
def send_head(self): if 'Range' not in self.headers: self.range = None return SimpleHTTPRequestHandler.send_head(self) try: self.range = parse_byte_range(self.headers['Range']) except ValueError as e: self.send_error(400, 'Invalid byte range') return None first, last = self.range # Mirroring SimpleHTTPServer.py here path = self.translate_path(self.path) f = None ctype = self.guess_type(path) try: f = open(path, 'rb') except IOError: self.send_error(404, 'File not found') return None fs = os.fstat(f.fileno()) file_len = fs[6] if first >= file_len: self.send_error(416, 'Requested Range Not Satisfiable') return None self.send_response(206) self.send_header('Content-type', ctype) self.send_header('Accept-Ranges', 'bytes') if last is None or last >= file_len: last = file_len - 1 response_length = last - first + 1 self.send_header('Content-Range', 'bytes %s-%s/%s' % (first, last, file_len)) self.send_header('Content-Length', str(response_length)) self.send_header('Last-Modified', self.date_time_string(fs.st_mtime)) self.end_headers() return f
def send_head(self): if self.is_in_cgi_dir(): self.run_cgi() else: return SimpleHTTPRequestHandler.send_head(self)