Skip to content

Commit e4f1b15

Browse files
fix: allow optional status code in response methods and default to instance status code
1 parent 25080a4 commit e4f1b15

File tree

1 file changed

+24
-5
lines changed

1 file changed

+24
-5
lines changed

nexios/http/response.py

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -674,9 +674,14 @@ def has_header(self, key: str) -> bool:
674674
return key.lower() in (k.lower() for k in self.headers.keys())
675675

676676
def text(
677-
self, content: JSONType, status_code: int = 200, headers: Dict[str, Any] = {}
677+
self,
678+
content: JSONType,
679+
status_code: Optional[int] = None,
680+
headers: Dict[str, Any] = {},
678681
):
679682
"""Send plain text or HTML content."""
683+
if status_code is None:
684+
status_code = self._status_code
680685
new_response = PlainTextResponse(
681686
body=content, status_code=status_code, headers=headers
682687
)
@@ -686,12 +691,14 @@ def text(
686691
def json(
687692
self,
688693
data: Union[str, List[Any], Dict[str, Any]],
689-
status_code: int = 200,
694+
status_code: Optional[int] = None,
690695
headers: Dict[str, Any] = {},
691696
indent: Optional[int] = None,
692697
ensure_ascii: bool = True,
693698
):
694699
"""Send JSON response."""
700+
if status_code is None:
701+
status_code = self._status_code
695702
new_response = JSONResponse(
696703
content=data,
697704
status_code=status_code,
@@ -714,14 +721,23 @@ def set_permanent_cookie(
714721
self.set_cookie(key, value, expires=expires, **kwargs) # type:ignore
715722
return self
716723

717-
def empty(self, status_code: int = 200, headers: Dict[str, Any] = {}):
724+
def empty(self, status_code: Optional[int] = None, headers: Dict[str, Any] = {}):
718725
"""Send an empty response."""
726+
if status_code is None:
727+
status_code = self._status_code
719728
new_response = BaseResponse(status_code=status_code, headers=headers)
720729
self._response = self._preserve_headers_and_cookies(new_response)
721730
return self
722731

723-
def html(self, content: str, status_code: int = 200, headers: Dict[str, Any] = {}):
732+
def html(
733+
self,
734+
content: str,
735+
status_code: Optional[int] = None,
736+
headers: Dict[str, Any] = {},
737+
):
724738
"""Send HTML response."""
739+
if status_code is None:
740+
status_code = self._status_code
725741
new_response = HTMLResponse(
726742
content=content, status_code=status_code, headers=headers
727743
)
@@ -743,6 +759,7 @@ def file(
743759
content_disposition_type=content_disposition_type,
744760
)
745761
self._response = self._preserve_headers_and_cookies(new_response)
762+
self._response.status_code = self._status_code
746763
return self
747764

748765
def stream(
@@ -752,6 +769,8 @@ def stream(
752769
status_code: Optional[int] = None,
753770
):
754771
"""Send streaming response."""
772+
if status_code is None:
773+
status_code = self._status_code
755774
new_response = StreamingResponse(
756775
content=iterator, # type: ignore
757776
status_code=status_code or self._status_code,
@@ -772,11 +791,11 @@ def redirect(self, url: str, status_code: int = 302):
772791
def status(self, status_code: int):
773792
"""Set response status code."""
774793
self._response.status_code = status_code
794+
self._status_code = status_code
775795
return self
776796

777797
def set_header(self, key: str, value: str, overide: bool = False):
778798
"""Set a response header."""
779-
780799
self._response.set_header(key, value, overide=overide)
781800
return self
782801

0 commit comments

Comments
 (0)