Add request_with_url_params method
This method allows a client to add any URL parameters when doing an API call. This can be used by application services to add URL parameters like user_id.
This commit is contained in:
parent
dc73e6d6c4
commit
d0c777ff9a
23
src/lib.rs
23
src/lib.rs
@ -111,6 +111,7 @@ use ruma_api::{
|
|||||||
Endpoint, Outgoing,
|
Endpoint, Outgoing,
|
||||||
};
|
};
|
||||||
use ruma_identifiers::DeviceId;
|
use ruma_identifiers::DeviceId;
|
||||||
|
use std::collections::BTreeMap;
|
||||||
use url::Url;
|
use url::Url;
|
||||||
|
|
||||||
pub use ruma_client_api as api;
|
pub use ruma_client_api as api;
|
||||||
@ -341,6 +342,22 @@ where
|
|||||||
) -> impl Future<Output = Result<<Request::Response as Outgoing>::Incoming, Error>>
|
) -> impl Future<Output = Result<<Request::Response as Outgoing>::Incoming, Error>>
|
||||||
// We need to duplicate Endpoint's where clauses because the compiler is not smart enough yet.
|
// We need to duplicate Endpoint's where clauses because the compiler is not smart enough yet.
|
||||||
// See https://github.com/rust-lang/rust/issues/54149
|
// See https://github.com/rust-lang/rust/issues/54149
|
||||||
|
where
|
||||||
|
Request::Incoming: TryFrom<http::Request<Vec<u8>>, Error = FromHttpRequestError>,
|
||||||
|
<Request::Response as Outgoing>::Incoming:
|
||||||
|
TryFrom<http::Response<Vec<u8>>, Error = FromHttpResponseError<api::Error>>,
|
||||||
|
{
|
||||||
|
self.request_with_url_params(request, None)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Makes a request to a Matrix API endpoint including additional URL parameters.
|
||||||
|
pub fn request_with_url_params<Request: Endpoint<ResponseError = api::Error>>(
|
||||||
|
&self,
|
||||||
|
request: Request,
|
||||||
|
params: Option<BTreeMap<String, String>>,
|
||||||
|
) -> impl Future<Output = Result<<Request::Response as Outgoing>::Incoming, Error>>
|
||||||
|
// We need to duplicate Endpoint's where clauses because the compiler is not smart enough yet.
|
||||||
|
// See https://github.com/rust-lang/rust/issues/54149
|
||||||
where
|
where
|
||||||
Request::Incoming: TryFrom<http::Request<Vec<u8>>, Error = FromHttpRequestError>,
|
Request::Incoming: TryFrom<http::Request<Vec<u8>>, Error = FromHttpRequestError>,
|
||||||
<Request::Response as Outgoing>::Incoming:
|
<Request::Response as Outgoing>::Incoming:
|
||||||
@ -359,6 +376,12 @@ where
|
|||||||
url.set_path(uri.path());
|
url.set_path(uri.path());
|
||||||
url.set_query(uri.query());
|
url.set_query(uri.query());
|
||||||
|
|
||||||
|
if let Some(params) = params {
|
||||||
|
for (key, value) in params {
|
||||||
|
url.query_pairs_mut().append_pair(&key, &value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if Request::METADATA.requires_authentication {
|
if Request::METADATA.requires_authentication {
|
||||||
if let Some(ref session) = *client.session.lock().unwrap() {
|
if let Some(ref session) = *client.session.lock().unwrap() {
|
||||||
url.query_pairs_mut()
|
url.query_pairs_mut()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user