summary refs log tree commit diff
path: root/changelog.d
diff options
context:
space:
mode:
authorQuentin Gliech <quenting@element.io>2024-04-18 12:20:30 +0200
committerGitHub <noreply@github.com>2024-04-18 12:20:30 +0200
commit09f0957b36cf1b4e9a89f5594df51a853d0dfffe (patch)
tree57ad6eb65d833ed18183a19bbf442d341e6ce37d /changelog.d
parentFix remote receipts for events we don't have (#17096) (diff)
downloadsynapse-09f0957b36cf1b4e9a89f5594df51a853d0dfffe.tar.xz
Helpers to transform Twisted requests to Rust http Requests/Responses (#17081)
This adds functions to transform a Twisted request to the
`http::Request`, and then to send back an `http::Response` through it.

It also imports the SynapseError exception so that we can throw that
from Rust code directly

Example usage of this would be:

```rust
use crate::http::{http_request_from_twisted, http_response_to_twisted, HeaderMapPyExt};

fn handler(twisted_request: &PyAny) -> PyResult<()> {
    let request = http_request_from_twisted(twisted_request)?;

    let ua: headers::UserAgent = request.headers().typed_get_required()?;

    if whatever {
        return Err((crate::errors::SynapseError::new(
            StatusCode::UNAUTHORIZED,
            "Whatever".to_owned
            "M_UNAUTHORIZED",
            None,
            None,
        )));
    }

    let response = Response::new("hello".as_bytes());
    http_response_to_twisted(twisted_request, response)?;

    Ok(())
}
```
Diffstat (limited to 'changelog.d')
-rw-r--r--changelog.d/17081.misc1
1 files changed, 1 insertions, 0 deletions
diff --git a/changelog.d/17081.misc b/changelog.d/17081.misc
new file mode 100644
index 0000000000..d1ab69126c
--- /dev/null
+++ b/changelog.d/17081.misc
@@ -0,0 +1 @@
+Add helpers to transform Twisted requests to Rust http Requests/Responses.