client: Remove isahc feature of ruma-client
This commit is contained in:
parent
770dce844e
commit
87950e9d40
@ -1,5 +1,9 @@
|
|||||||
# [unreleased]
|
# [unreleased]
|
||||||
|
|
||||||
|
Breaking changes:
|
||||||
|
|
||||||
|
- Remove `isahc` feature
|
||||||
|
|
||||||
Improvements:
|
Improvements:
|
||||||
|
|
||||||
- Add `error_kind` accessor method to `Error<E, ruma_client_api::Error>`
|
- Add `error_kind` accessor method to `Error<E, ruma_client_api::Error>`
|
||||||
|
@ -22,7 +22,6 @@ client-api = ["dep:as_variant", "dep:ruma-client-api"]
|
|||||||
hyper = ["dep:hyper"]
|
hyper = ["dep:hyper"]
|
||||||
hyper-native-tls = ["hyper", "dep:hyper-tls"]
|
hyper-native-tls = ["hyper", "dep:hyper-tls"]
|
||||||
hyper-rustls = ["hyper", "dep:hyper-rustls"]
|
hyper-rustls = ["hyper", "dep:hyper-rustls"]
|
||||||
isahc = ["dep:isahc", "futures-lite"]
|
|
||||||
reqwest = ["dep:reqwest"]
|
reqwest = ["dep:reqwest"]
|
||||||
reqwest-native-tls = ["reqwest", "reqwest?/native-tls"]
|
reqwest-native-tls = ["reqwest", "reqwest?/native-tls"]
|
||||||
reqwest-native-tls-alpn = ["reqwest", "reqwest?/native-tls-alpn"]
|
reqwest-native-tls-alpn = ["reqwest", "reqwest?/native-tls-alpn"]
|
||||||
@ -37,12 +36,10 @@ assign = { workspace = true }
|
|||||||
async-stream = "0.3.0"
|
async-stream = "0.3.0"
|
||||||
bytes = "1.0.1"
|
bytes = "1.0.1"
|
||||||
futures-core = "0.3.8"
|
futures-core = "0.3.8"
|
||||||
futures-lite = { version = "1.11.3", optional = true }
|
|
||||||
http = { workspace = true }
|
http = { workspace = true }
|
||||||
hyper = { version = "0.14.2", optional = true, features = ["client", "http1", "http2", "tcp"] }
|
hyper = { version = "0.14.2", optional = true, features = ["client", "http1", "http2", "tcp"] }
|
||||||
hyper-rustls = { version = "0.24.0", optional = true, default-features = false }
|
hyper-rustls = { version = "0.24.0", optional = true, default-features = false }
|
||||||
hyper-tls = { version = "0.5.0", optional = true }
|
hyper-tls = { version = "0.5.0", optional = true }
|
||||||
isahc = { version = "1.3.1", optional = true }
|
|
||||||
reqwest = { version = "0.11.4", optional = true, default-features = false }
|
reqwest = { version = "0.11.4", optional = true, default-features = false }
|
||||||
ruma-client-api = { workspace = true, optional = true, features = ["client"] }
|
ruma-client-api = { workspace = true, optional = true, features = ["client"] }
|
||||||
ruma-common = { workspace = true, features = ["api"] }
|
ruma-common = { workspace = true, features = ["api"] }
|
||||||
|
@ -13,8 +13,6 @@ use crate::{add_user_id_to_query, ResponseError, ResponseResult};
|
|||||||
|
|
||||||
#[cfg(feature = "hyper")]
|
#[cfg(feature = "hyper")]
|
||||||
mod hyper;
|
mod hyper;
|
||||||
#[cfg(feature = "isahc")]
|
|
||||||
mod isahc;
|
|
||||||
#[cfg(feature = "reqwest")]
|
#[cfg(feature = "reqwest")]
|
||||||
mod reqwest;
|
mod reqwest;
|
||||||
|
|
||||||
@ -24,8 +22,6 @@ pub use self::hyper::Hyper;
|
|||||||
pub use self::hyper::HyperNativeTls;
|
pub use self::hyper::HyperNativeTls;
|
||||||
#[cfg(feature = "hyper-rustls")]
|
#[cfg(feature = "hyper-rustls")]
|
||||||
pub use self::hyper::HyperRustls;
|
pub use self::hyper::HyperRustls;
|
||||||
#[cfg(feature = "isahc")]
|
|
||||||
pub use self::isahc::Isahc;
|
|
||||||
#[cfg(feature = "reqwest")]
|
#[cfg(feature = "reqwest")]
|
||||||
pub use self::reqwest::Reqwest;
|
pub use self::reqwest::Reqwest;
|
||||||
|
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
use futures_lite::AsyncReadExt;
|
|
||||||
|
|
||||||
use super::HttpClient;
|
|
||||||
|
|
||||||
/// The `isahc` crate's `HttpClient`.
|
|
||||||
pub type Isahc = isahc::HttpClient;
|
|
||||||
|
|
||||||
impl HttpClient for Isahc {
|
|
||||||
type RequestBody = Vec<u8>;
|
|
||||||
type ResponseBody = Vec<u8>;
|
|
||||||
type Error = isahc::Error;
|
|
||||||
|
|
||||||
async fn send_http_request(
|
|
||||||
&self,
|
|
||||||
req: http::Request<Vec<u8>>,
|
|
||||||
) -> Result<http::Response<Vec<u8>>, isahc::Error> {
|
|
||||||
let (head, mut body) = self.send_async(req).await?.into_parts();
|
|
||||||
let mut full_body = Vec::new();
|
|
||||||
body.read_to_end(&mut full_body).await?;
|
|
||||||
Ok(http::Response::from_parts(head, full_body))
|
|
||||||
}
|
|
||||||
}
|
|
@ -84,7 +84,6 @@
|
|||||||
//! * `hyper`
|
//! * `hyper`
|
||||||
//! * `hyper-native-tls`
|
//! * `hyper-native-tls`
|
||||||
//! * `hyper-rustls`
|
//! * `hyper-rustls`
|
||||||
//! * `isahc`
|
|
||||||
//! * `reqwest` – if you use the `reqwest` library already, activate this feature and configure the
|
//! * `reqwest` – if you use the `reqwest` library already, activate this feature and configure the
|
||||||
//! TLS backend on `reqwest` directly. If you want to use `reqwest` but don't depend on it
|
//! TLS backend on `reqwest` directly. If you want to use `reqwest` but don't depend on it
|
||||||
//! already, use one of the sub-features instead. For details on the meaning of these, see
|
//! already, use one of the sub-features instead. For details on the meaning of these, see
|
||||||
|
@ -28,7 +28,6 @@ state-res = ["dep:ruma-state-res"]
|
|||||||
client-ext-client-api = ["client", "ruma-client?/client-api"]
|
client-ext-client-api = ["client", "ruma-client?/client-api"]
|
||||||
client-hyper = ["client", "ruma-client?/hyper"]
|
client-hyper = ["client", "ruma-client?/hyper"]
|
||||||
client-hyper-native-tls = ["client", "ruma-client?/hyper-native-tls"]
|
client-hyper-native-tls = ["client", "ruma-client?/hyper-native-tls"]
|
||||||
client-isahc = ["client", "ruma-client?/isahc"]
|
|
||||||
client-reqwest = ["client", "ruma-client?/reqwest"]
|
client-reqwest = ["client", "ruma-client?/reqwest"]
|
||||||
client-reqwest-native-tls = ["client", "ruma-client?/reqwest-native-tls"]
|
client-reqwest-native-tls = ["client", "ruma-client?/reqwest-native-tls"]
|
||||||
client-reqwest-native-tls-vendored = ["client", "ruma-client?/reqwest-native-tls-vendored"]
|
client-reqwest-native-tls-vendored = ["client", "ruma-client?/reqwest-native-tls-vendored"]
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
[package]
|
|
||||||
name = "hello_isahc"
|
|
||||||
version = "0.1.0"
|
|
||||||
edition = "2021"
|
|
||||||
publish = false
|
|
||||||
|
|
||||||
[dependencies]
|
|
||||||
ruma = { version = "0.9.4", path = "../../crates/ruma", features = ["client-api-c", "client-ext-client-api", "client-isahc", "rand"] }
|
|
||||||
|
|
||||||
anyhow = "1.0.37"
|
|
||||||
isahc = "1.3.1"
|
|
||||||
tokio = { version = "1.0.1", features = ["macros", "rt"] }
|
|
@ -1,13 +0,0 @@
|
|||||||
Same as the [hello_world](../hello_world) example, but using the
|
|
||||||
[isahc](https://crates.io/crates/isahc) HTTP client (a Rust wrapper around libcurl).
|
|
||||||
|
|
||||||
# Usage
|
|
||||||
|
|
||||||
You will need to use an existing account on a homeserver that allows login with
|
|
||||||
a password.
|
|
||||||
|
|
||||||
In this folder, you can run it with this command:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
cargo run <homeserver_url> <username> <password> <room>
|
|
||||||
```
|
|
@ -1,48 +0,0 @@
|
|||||||
use std::{env, process::exit};
|
|
||||||
|
|
||||||
use ruma::{
|
|
||||||
api::client::{alias::get_alias, membership::join_room_by_id, message::send_message_event},
|
|
||||||
events::room::message::RoomMessageEventContent,
|
|
||||||
OwnedRoomAliasId, TransactionId,
|
|
||||||
};
|
|
||||||
|
|
||||||
async fn hello_world(
|
|
||||||
homeserver_url: String,
|
|
||||||
username: &str,
|
|
||||||
password: &str,
|
|
||||||
room_alias: OwnedRoomAliasId,
|
|
||||||
) -> anyhow::Result<()> {
|
|
||||||
let http_client = isahc::HttpClient::new()?;
|
|
||||||
let client =
|
|
||||||
ruma::Client::builder().homeserver_url(homeserver_url).http_client(http_client).await?;
|
|
||||||
client.log_in(username, password, None, Some("ruma-example-client")).await?;
|
|
||||||
|
|
||||||
let room_id = client.send_request(get_alias::v3::Request::new(room_alias)).await?.room_id;
|
|
||||||
client.send_request(join_room_by_id::v3::Request::new(room_id.clone())).await?;
|
|
||||||
client
|
|
||||||
.send_request(send_message_event::v3::Request::new(
|
|
||||||
room_id,
|
|
||||||
TransactionId::new(),
|
|
||||||
&RoomMessageEventContent::text_plain("Hello World!"),
|
|
||||||
)?)
|
|
||||||
.await?;
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
#[tokio::main(flavor = "current_thread")]
|
|
||||||
async fn main() -> anyhow::Result<()> {
|
|
||||||
let (homeserver_url, username, password, room) =
|
|
||||||
match (env::args().nth(1), env::args().nth(2), env::args().nth(3), env::args().nth(4)) {
|
|
||||||
(Some(a), Some(b), Some(c), Some(d)) => (a, b, c, d),
|
|
||||||
_ => {
|
|
||||||
eprintln!(
|
|
||||||
"Usage: {} <homeserver_url> <username> <password> <room>",
|
|
||||||
env::args().next().unwrap()
|
|
||||||
);
|
|
||||||
exit(1)
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
hello_world(homeserver_url, &username, &password, room.try_into()?).await
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user