예제 #1
0
    def post(self, request: Request) -> Response:

        return Response(
            status=HTTP_STATUS.FOUND,
            headers={"Location": "/user"},
            session={"name": request.POST["user_name"][0]},
        )
예제 #2
0
 def get(request: Request) -> Response:
     """
     /headers のパスにきたリクエストに対して、headerの内容をレスポンスとして返す
     :param request:
     :return:
     """
     body_str = ""
     for key, value in request.headers.items():
         body_str += f"{key}: {value}<br>"
     return Response(status=HTTP_STATUS.OK, body=body_str.encode())
예제 #3
0
    def _start_response_by_response(self, response: Response) -> None:
        status = response.status.value

        response.headers["Content-Type"] = response.content_type
        headers = [(key, value) for key, value in response.headers.items()]

        for key, value in response.cookies.items():
            headers.append(("Set-Cookie", f"{key}={value}"))

        self.start_response(status, headers)
예제 #4
0
    def get(self, request: Request) -> Response:
        """
        リクエストメソッドがGETだった時の処理
        """

        body_str = ""
        for key, value in request.headers.items():
            body_str += f"{key}: {value}<br>"

        return Response(status=HTTP_STATUS.OK, body=body_str.encode())
예제 #5
0
 def get(self, request: Request) -> Response:
     """
     リクエストメソッドがGETだった時の処理
     """
     body = f"""\
     <html>
     <body>
         now is {datetime.now()}
     </body>
     </html>
     """.encode()
     return Response(status=HTTP_STATUS.OK, body=body)
예제 #6
0
 def get(request: Request) -> Response:
     """
     :return: Cookieを設定して返す
     """
     body = "cookies"
     body += str(request.cookies)
     return Response(status=HTTP_STATUS.OK,
                     body=body.encode(),
                     cookies={
                         "test_cookie3": "hoge3",
                         "test_cookie4": "hoge4"
                     })
예제 #7
0
 def get_response(self, request: Request) -> Response:
     """
     /parameters のパスにきたリクエストに対して、適切なレスポンスを生成して返す
     :param request:
     :return:
     """
     if request.method == "GET":
         return self.get(request)
     elif request.method == "POST":
         return self.post(request)
     else:
         return Response(status=HTTP_STATUS.METHOD_NOT_ALLOWED)
예제 #8
0
 def post(self, request: Request) -> Response:
     """
     リクエストメソッドがPOSTだった時の処理
     """
     body = f"""\
     <html>
     <body>
         {str(request.POST)}
     </body>
     </html>
     """.encode()
     return Response(status=HTTP_STATUS.OK, body=body)
예제 #9
0
    def post(self, request: Request) -> Response:
        # Cookieからsession_idを取得
        if "session_id" not in request.cookies:
            session_id = str(uuid4())
        else:
            session_id = request.cookies["session_id"]

        SESSIONS[session_id] = {"name": request.POST["user_name"][0]}

        return Response(
            status=HTTP_STATUS.FOUND,
            headers={"Location": "/user"},
            cookies={"session_id": session_id},
        )
예제 #10
0
    def get(self, request: Request) -> Response:

        body = dedent(f"""
            <html>
            <body>
                <h2>
                    Current Cookies: {request.cookies}
                </h2>
            </body>
            </html>
            """).encode()

        return Response(status=HTTP_STATUS.OK,
                        body=body,
                        cookies={
                            "foo": "bar",
                            "foo2": "bar2"
                        })
예제 #11
0
    def get(self, request: Request) -> Response:
        if request.session:
            name = request.session.get("name")
        else:
            name = ""

        body = f"""\
        <html>
        <body>
            <h1>ようこそ [ {name or "名無し"} ] さん!
            <form method="post">
                名前変更: <input type="text" name="user_name"></input>

                <input type="submit" value="送信">
            </form>
        </body>
        </html>
        """

        return Response(body=body.encode(), status=HTTP_STATUS.OK)
예제 #12
0
 def get(request: Request) -> Response:
     current_time_str = f"<html><body><h1>now is {datetime.now()}</h1></body></html>"
     return Response(status=HTTP_STATUS.OK, body=current_time_str.encode())
예제 #13
0
 def post(self, request: Request) -> Response:
     return Response(status=HTTP_STATUS.METHOD_NOT_ALLOWED)
예제 #14
0
 def get(request: Request) -> Response:
     """
     リクエストメソッドがGETだった時の処理
     """
     return Response(status=HTTP_STATUS.OK, body=str(request.GET).encode())
예제 #15
0
 def get(request: Request) -> Response:
     return Response(status=HTTP_STATUS.METHOD_NOT_ALLOWED)