Skip to main content

arminius_server_client/
lib.rs

1// SPDX-FileCopyrightText: 2025 BWI GmbH
2//
3// SPDX-License-Identifier: Apache-2.0
4
5//! Crate containing the client routes for Arminius
6
7mod auth;
8mod client_request;
9mod handlers;
10mod tests;
11
12use arminius_lib_component::{Server, compose_components};
13use arminius_lib_sync::SyncComponent;
14use handlers::{
15	account::AccountComponent, account_data::AccountDataComponent, auth::AuthComponent,
16	cross_signing::CrossSigningKeysComponent, devices::DevicesComponent,
17	discovery::DiscoveryComponent, filter::FilterComponent, presence::PresenceComponent,
18	profile::ProfileComponent, push::PushComponent, room::RoomComponent,
19	room_keys::RoomKeysComponent, signatures::SignaturesComponent, tags::TagsComponent,
20	thirdparty::ThirdpartyComponent, to_device::ToDeviceComponent,
21	user_directory::UserDirectoryComponent, user_keys::UserKeysComponent,
22};
23use ruma::{OwnedMxcUri, ServerName};
24
25/// Get the MXC URL based on server_name and media id
26fn avatar_id_to_mxc(server_name: &ServerName, id: &str) -> OwnedMxcUri {
27	format!("mxc://{server_name}/{id}").into()
28}
29
30/// The Inner type that is wrapped by ClientComponent, only used internally.
31type DefaultClientComponents = compose_components!(
32	AccountComponent,
33	AccountDataComponent,
34	AuthComponent,
35	CrossSigningKeysComponent,
36	DevicesComponent,
37	DiscoveryComponent,
38	FilterComponent,
39	PresenceComponent,
40	ProfileComponent,
41	PushComponent,
42	RoomComponent,
43	RoomKeysComponent,
44	SignaturesComponent,
45	SyncComponent,
46	TagsComponent,
47	ThirdpartyComponent,
48	ToDeviceComponent,
49	UserDirectoryComponent,
50	UserKeysComponent
51);
52
53/// Client component, optionally combined with test login component
54#[cfg(feature = "test_login")]
55pub type ClientServerComponents = arminius_lib_component::ComposedComponent<
56	DefaultClientComponents,
57	handlers::test_login::TestLoginComponent,
58>;
59/// Client component, optionally combined with test login component
60#[cfg(not(feature = "test_login"))]
61pub type ClientServerComponents = DefaultClientComponents;
62
63/// Client server handling the client API
64pub type ClientServer = Server<ClientServerComponents>;