appservice: Add new_with_client_config
parent
2becb88c35
commit
3f2fecd309
|
@ -196,6 +196,10 @@ pub struct Appservice {
|
||||||
impl Appservice {
|
impl Appservice {
|
||||||
/// Create new Appservice
|
/// Create new Appservice
|
||||||
///
|
///
|
||||||
|
/// Also creates and caches a [`Client`] with the [`MainAppserviceUser`].
|
||||||
|
/// The default [`ClientConfig`] is used, if you want to customize it
|
||||||
|
/// use [`Self::new_with_client_config()`] instead.
|
||||||
|
///
|
||||||
/// # Arguments
|
/// # Arguments
|
||||||
///
|
///
|
||||||
/// * `homeserver_url` - The homeserver that the client should connect to.
|
/// * `homeserver_url` - The homeserver that the client should connect to.
|
||||||
|
@ -210,22 +214,36 @@ impl Appservice {
|
||||||
server_name: impl TryInto<ServerNameBox, Error = identifiers::Error>,
|
server_name: impl TryInto<ServerNameBox, Error = identifiers::Error>,
|
||||||
registration: AppserviceRegistration,
|
registration: AppserviceRegistration,
|
||||||
) -> Result<Self> {
|
) -> Result<Self> {
|
||||||
let homeserver_url = homeserver_url.try_into()?;
|
let appservice = Self::new_with_client_config(
|
||||||
let server_name = server_name.try_into()?;
|
homeserver_url,
|
||||||
|
server_name,
|
||||||
let client_sender_localpart = Client::new(homeserver_url.clone())?;
|
registration,
|
||||||
|
ClientConfig::default(),
|
||||||
client_session_with_login_restore(
|
|
||||||
&client_sender_localpart,
|
|
||||||
®istration,
|
|
||||||
registration.sender_localpart.as_ref(),
|
|
||||||
&server_name,
|
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
let registration = Arc::new(registration);
|
Ok(appservice)
|
||||||
|
}
|
||||||
|
|
||||||
Ok(Appservice { homeserver_url, server_name, registration, client_sender_localpart })
|
/// Same as [`Self::new()`] but lets you provide a [`ClientConfig`] for the
|
||||||
|
/// [`Client`]
|
||||||
|
pub async fn new_with_client_config(
|
||||||
|
homeserver_url: impl TryInto<Url, Error = url::ParseError>,
|
||||||
|
server_name: impl TryInto<ServerNameBox, Error = identifiers::Error>,
|
||||||
|
registration: AppserviceRegistration,
|
||||||
|
client_config: ClientConfig,
|
||||||
|
) -> Result<Self> {
|
||||||
|
let homeserver_url = homeserver_url.try_into()?;
|
||||||
|
let server_name = server_name.try_into()?;
|
||||||
|
let registration = Arc::new(registration);
|
||||||
|
let clients = Arc::new(DashMap::new());
|
||||||
|
|
||||||
|
let appservice = Appservice { homeserver_url, server_name, registration, clients };
|
||||||
|
|
||||||
|
// we cache the [`MainAppserviceUser`] by default
|
||||||
|
appservice.client_with_config(None, client_config).await?;
|
||||||
|
|
||||||
|
Ok(appservice)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Create a [`Client`]
|
/// Create a [`Client`]
|
||||||
|
@ -243,7 +261,7 @@ impl Appservice {
|
||||||
///
|
///
|
||||||
/// [registration]: https://matrix.org/docs/spec/application_service/r0.1.2#registration
|
/// [registration]: https://matrix.org/docs/spec/application_service/r0.1.2#registration
|
||||||
/// [assert the identity]: https://matrix.org/docs/spec/application_service/r0.1.2#identity-assertion
|
/// [assert the identity]: https://matrix.org/docs/spec/application_service/r0.1.2#identity-assertion
|
||||||
pub async fn client(&mut self, localpart: Option<&str>) -> Result<Client> {
|
pub async fn client(&self, localpart: Option<&str>) -> Result<Client> {
|
||||||
let client = self.client_with_config(localpart, ClientConfig::default()).await?;
|
let client = self.client_with_config(localpart, ClientConfig::default()).await?;
|
||||||
|
|
||||||
Ok(client)
|
Ok(client)
|
||||||
|
@ -255,7 +273,7 @@ impl Appservice {
|
||||||
/// Since this method is a singleton follow-up calls with different
|
/// Since this method is a singleton follow-up calls with different
|
||||||
/// [`ClientConfig`]s will be ignored.
|
/// [`ClientConfig`]s will be ignored.
|
||||||
pub async fn client_with_config(
|
pub async fn client_with_config(
|
||||||
&mut self,
|
&self,
|
||||||
localpart: Option<&str>,
|
localpart: Option<&str>,
|
||||||
config: ClientConfig,
|
config: ClientConfig,
|
||||||
) -> Result<Client> {
|
) -> Result<Client> {
|
||||||
|
|
Loading…
Reference in New Issue