Skip to content
Snippets Groups Projects
  1. Apr 18, 2024
    • Quentin Gliech's avatar
      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(())
      }
      ```
      09f0957b
Loading