class NormalController(BaseController): def __init__(self): pass #GETメソッドを受け取った時 def do_get(self, request) -> Response: super().do_get(request) # make responce object so determine states code #指定されたuriのファイルが存在するか確認 if not self.path: self.path = "index.html" self.ext = "html" target_file_path = os.path.join(main.DOCUMENT_ROOT, self.path) print(target_file_path) if os.path.exists(target_file_path) and os.path.isfile(target_file_path): self.response = Response(main.protocolVersion, States.OK) self.response.body = self.open_files(target_file_path, self.ext) #ファイルが見つからない時、not_found.htmlを送信 else: self.response = self.not_found() self.response.add_header("Content-Type", content_type.get_content_text(self.ext)) return self.response
def respond(self): '''Respond to a HTTP request''' body = b"<html><body>Response</body></html>\r\n" resp = Response(self.parser.version) resp.add_header(b"Server", b"lath" + b"/" + self.lath_version) resp.add_header(b"Date", datetime.utcnow().strftime("%a, %d %b %Y %H:%M:%S GMT").encode()) self.cli_sock.send(resp.gen(body)) print("responded.") self.responded = True
def handle_get(self, request): """GET request handler. Returns file to client :type request: Request """ logging.info(f'Processing GET request {request.path}') path_to_file = self.__get_abs_path(request.path) file_descriptor = self.__file_cache.get_fd(path_to_file) if file_descriptor and path_to_file.is_file(): response = Response(code=200) response.add_header("Content-Length", str(path.getsize(path_to_file))) file_type, charset = self.__mime.guess_type(path_to_file.as_uri()) response.add_header("Content-Type", file_type) return self.__send_file_response( response=response, file_descriptor=file_descriptor), response else: bad_req_response = Response(code=404) return self.__send_general_response( bad_req_response), bad_req_response