Module supertokens_python.framework.flask.flask_response
Expand source code
# Copyright (c) 2021, VRAI Labs and/or its affiliates. All rights reserved.
#
# This software is licensed under the Apache License, Version 2.0 (the
# "License") as published by the Apache Software Foundation.
#
# You may not use this file except in compliance with the License. You may
# obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import json
from typing import Any, Dict, List, Optional
from supertokens_python.framework.response import BaseResponse
class FlaskResponse(BaseResponse):
from flask.wrappers import Response
def __init__(self, response: Response):
super().__init__({})
self.response = response
self.original = response
self.headers: List[Any] = []
self.response_sent = False
self.status_set = False
def set_html_content(self, content: str):
if not self.response_sent:
self.response.data = content
self.set_header("Content-Type", "text/html")
self.response_sent = True
def set_cookie(
self,
key: str,
value: str,
expires: int,
path: str = "/",
domain: Optional[str] = None,
secure: bool = False,
httponly: bool = False,
samesite: str = "lax",
):
self.response.set_cookie(
key,
value=value,
expires=expires / 1000,
path=path,
domain=domain,
secure=secure,
httponly=httponly,
samesite=samesite,
)
def set_header(self, key: str, value: str):
self.response.headers.set(key, value)
def get_header(self, key: str) -> Optional[str]:
return self.response.headers.get(key)
def remove_header(self, key: str):
del self.response.headers[key]
def set_status_code(self, status_code: int):
if not self.status_set:
self.response.status_code = status_code
self.status_code = status_code
self.status_set = True
def get_headers(self):
return self.response.headers
def set_json_content(self, content: Dict[str, Any]):
if not self.response_sent:
self.set_header("Content-Type", "application/json; charset=utf-8")
self.response.data = json.dumps(
content,
ensure_ascii=False,
allow_nan=False,
indent=None,
separators=(",", ":"),
).encode("utf-8")
self.response_sent = True
Classes
class FlaskResponse (response: flask.wrappers.Response)
-
Helper class that provides a standard way to create an ABC using inheritance.
Expand source code
class FlaskResponse(BaseResponse): from flask.wrappers import Response def __init__(self, response: Response): super().__init__({}) self.response = response self.original = response self.headers: List[Any] = [] self.response_sent = False self.status_set = False def set_html_content(self, content: str): if not self.response_sent: self.response.data = content self.set_header("Content-Type", "text/html") self.response_sent = True def set_cookie( self, key: str, value: str, expires: int, path: str = "/", domain: Optional[str] = None, secure: bool = False, httponly: bool = False, samesite: str = "lax", ): self.response.set_cookie( key, value=value, expires=expires / 1000, path=path, domain=domain, secure=secure, httponly=httponly, samesite=samesite, ) def set_header(self, key: str, value: str): self.response.headers.set(key, value) def get_header(self, key: str) -> Optional[str]: return self.response.headers.get(key) def remove_header(self, key: str): del self.response.headers[key] def set_status_code(self, status_code: int): if not self.status_set: self.response.status_code = status_code self.status_code = status_code self.status_set = True def get_headers(self): return self.response.headers def set_json_content(self, content: Dict[str, Any]): if not self.response_sent: self.set_header("Content-Type", "application/json; charset=utf-8") self.response.data = json.dumps( content, ensure_ascii=False, allow_nan=False, indent=None, separators=(",", ":"), ).encode("utf-8") self.response_sent = True
Ancestors
- BaseResponse
- abc.ABC
Class variables
var Response
-
The response object that is used by default in Flask. Works like the response object from Werkzeug but is set to have an HTML mimetype by default. Quite often you don't have to create this object yourself because :meth:
~flask.Flask.make_response
will take care of that for you.If you want to replace the response object used you can subclass this and set :attr:
~flask.Flask.response_class
to your subclass.Changed in version: 1.0
JSON support is added to the response, like the request. This is useful when testing to get the test client response data as JSON.
Changed in version: 1.0
Added :attr:
max_cookie_size
.
Methods
def get_header(self, key: str) ‑> Optional[str]
-
Expand source code
def get_header(self, key: str) -> Optional[str]: return self.response.headers.get(key)
def get_headers(self)
-
Expand source code
def get_headers(self): return self.response.headers
def remove_header(self, key: str)
-
Expand source code
def remove_header(self, key: str): del self.response.headers[key]
-
Expand source code
def set_cookie( self, key: str, value: str, expires: int, path: str = "/", domain: Optional[str] = None, secure: bool = False, httponly: bool = False, samesite: str = "lax", ): self.response.set_cookie( key, value=value, expires=expires / 1000, path=path, domain=domain, secure=secure, httponly=httponly, samesite=samesite, )
def set_header(self, key: str, value: str)
-
Expand source code
def set_header(self, key: str, value: str): self.response.headers.set(key, value)
def set_html_content(self, content: str)
-
Expand source code
def set_html_content(self, content: str): if not self.response_sent: self.response.data = content self.set_header("Content-Type", "text/html") self.response_sent = True
def set_json_content(self, content: Dict[str, Any])
-
Expand source code
def set_json_content(self, content: Dict[str, Any]): if not self.response_sent: self.set_header("Content-Type", "application/json; charset=utf-8") self.response.data = json.dumps( content, ensure_ascii=False, allow_nan=False, indent=None, separators=(",", ":"), ).encode("utf-8") self.response_sent = True
def set_status_code(self, status_code: int)
-
Expand source code
def set_status_code(self, status_code: int): if not self.status_set: self.response.status_code = status_code self.status_code = status_code self.status_set = True