synapse/rust
Quentin Gliech 09f0957b36
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(())
}
```
2024-04-18 12:20:30 +02:00
..
benches Correctly mention previous copyright (#16820) 2024-01-23 11:26:48 +00:00
src Helpers to transform Twisted requests to Rust http Requests/Responses (#17081) 2024-04-18 12:20:30 +02:00
build.rs Implement push rule evaluation in Rust. (#13838) 2022-09-29 16:12:09 +01:00
Cargo.toml Helpers to transform Twisted requests to Rust http Requests/Responses (#17081) 2024-04-18 12:20:30 +02:00