mirror of
https://github.com/element-hq/synapse.git
synced 2024-12-21 03:42:55 +03:00
09f0957b36
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(()) } ```
49 lines
1.1 KiB
TOML
49 lines
1.1 KiB
TOML
[package]
|
|
# We name the package `synapse` so that things like logging have the right
|
|
# logging target.
|
|
name = "synapse"
|
|
|
|
# dummy version. See pyproject.toml for the Synapse's version number.
|
|
version = "0.1.0"
|
|
|
|
edition = "2021"
|
|
rust-version = "1.66.0"
|
|
|
|
[lib]
|
|
name = "synapse"
|
|
# We generate a `cdylib` for Python and a standard `lib` for running
|
|
# tests/benchmarks.
|
|
crate-type = ["lib", "cdylib"]
|
|
|
|
# This is deprecated, see tool.maturin in pyproject.toml.
|
|
# It is left here for compatibilty with maturin < 0.15.
|
|
[package.metadata.maturin]
|
|
# This is where we tell maturin where to place the built library.
|
|
name = "synapse.synapse_rust"
|
|
|
|
[dependencies]
|
|
anyhow = "1.0.63"
|
|
bytes = "1.6.0"
|
|
headers = "0.4.0"
|
|
http = "1.1.0"
|
|
lazy_static = "1.4.0"
|
|
log = "0.4.17"
|
|
pyo3 = { version = "0.20.0", features = [
|
|
"macros",
|
|
"anyhow",
|
|
"abi3",
|
|
"abi3-py38",
|
|
] }
|
|
pyo3-log = "0.9.0"
|
|
pythonize = "0.20.0"
|
|
regex = "1.6.0"
|
|
serde = { version = "1.0.144", features = ["derive"] }
|
|
serde_json = "1.0.85"
|
|
|
|
[features]
|
|
extension-module = ["pyo3/extension-module"]
|
|
default = ["extension-module"]
|
|
|
|
[build-dependencies]
|
|
blake2 = "0.10.4"
|
|
hex = "0.4.3"
|