Skip to content
Snippets Groups Projects
  • Quentin Gliech's avatar
    09f0957b
    Helpers to transform Twisted requests to Rust http Requests/Responses (#17081) · 09f0957b
    Quentin Gliech authored
    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(())
    }
    ```
    Helpers to transform Twisted requests to Rust http Requests/Responses (#17081)
    Quentin Gliech authored
    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(())
    }
    ```