Skip to content

Commit c785d54

Browse files
committedMar 21, 2025
refactor: encapsule field TrackerCoreContainer in TrackerHttpApiCoreContainer
1 parent 239f352 commit c785d54

File tree

4 files changed

+19
-39
lines changed

4 files changed

+19
-39
lines changed
 

‎packages/axum-rest-tracker-api-server/src/v1/context/stats/routes.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ pub fn add(prefix: &str, router: Router, http_api_container: &Arc<TrackerHttpApi
1616
router.route(
1717
&format!("{prefix}/stats"),
1818
get(get_stats_handler).with_state((
19-
http_api_container.in_memory_torrent_repository.clone(),
19+
http_api_container.tracker_core_container.in_memory_torrent_repository.clone(),
2020
http_api_container.ban_service.clone(),
2121
http_api_container.http_stats_repository.clone(),
2222
http_api_container.udp_server_stats_repository.clone(),

‎packages/axum-rest-tracker-api-server/src/v1/routes.rs

+15-3
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,21 @@ use super::context::{auth_key, stats, torrent, whitelist};
1010
pub fn add(prefix: &str, router: Router, http_api_container: &Arc<TrackerHttpApiCoreContainer>) -> Router {
1111
let v1_prefix = format!("{prefix}/v1");
1212

13-
let router = auth_key::routes::add(&v1_prefix, router, &http_api_container.keys_handler.clone());
13+
let router = auth_key::routes::add(
14+
&v1_prefix,
15+
router,
16+
&http_api_container.tracker_core_container.keys_handler.clone(),
17+
);
1418
let router = stats::routes::add(&v1_prefix, router, http_api_container);
15-
let router = whitelist::routes::add(&v1_prefix, router, &http_api_container.whitelist_manager);
19+
let router = whitelist::routes::add(
20+
&v1_prefix,
21+
router,
22+
&http_api_container.tracker_core_container.whitelist_manager,
23+
);
1624

17-
torrent::routes::add(&v1_prefix, router, &http_api_container.in_memory_torrent_repository.clone())
25+
torrent::routes::add(
26+
&v1_prefix,
27+
router,
28+
&http_api_container.tracker_core_container.in_memory_torrent_repository.clone(),
29+
)
1830
}

‎packages/rest-tracker-api-core/src/container.rs

+2-19
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
use std::sync::Arc;
22

33
use bittorrent_http_tracker_core::container::HttpTrackerCoreContainer;
4-
use bittorrent_tracker_core::authentication::handler::KeysHandler;
54
use bittorrent_tracker_core::container::TrackerCoreContainer;
6-
use bittorrent_tracker_core::torrent::repository::in_memory::InMemoryTorrentRepository;
7-
use bittorrent_tracker_core::whitelist::manager::WhitelistManager;
85
use bittorrent_udp_tracker_core::container::UdpTrackerCoreContainer;
96
use bittorrent_udp_tracker_core::services::banning::BanService;
107
use bittorrent_udp_tracker_core::{self};
@@ -13,22 +10,11 @@ use torrust_tracker_configuration::{Core, HttpApi, HttpTracker, UdpTracker};
1310
use torrust_udp_tracker_server::container::UdpTrackerServerContainer;
1411

1512
pub struct TrackerHttpApiCoreContainer {
16-
// todo: replace with TrackerCoreContainer
17-
pub core_config: Arc<Core>,
18-
pub in_memory_torrent_repository: Arc<InMemoryTorrentRepository>,
19-
pub keys_handler: Arc<KeysHandler>,
20-
pub whitelist_manager: Arc<WhitelistManager>,
21-
22-
// todo: replace with HttpTrackerCoreContainer
13+
pub tracker_core_container: Arc<TrackerCoreContainer>,
2314
pub http_stats_repository: Arc<bittorrent_http_tracker_core::statistics::repository::Repository>,
24-
25-
// todo: replace with UdpTrackerCoreContainer
2615
pub ban_service: Arc<RwLock<BanService>>,
2716
pub udp_core_stats_repository: Arc<bittorrent_udp_tracker_core::statistics::repository::Repository>,
28-
29-
// todo: replace with UdpTrackerServerContainer
3017
pub udp_server_stats_repository: Arc<torrust_udp_tracker_server::statistics::repository::Repository>,
31-
3218
pub http_api_config: Arc<HttpApi>,
3319
}
3420

@@ -63,10 +49,7 @@ impl TrackerHttpApiCoreContainer {
6349
http_api_config: &Arc<HttpApi>,
6450
) -> Arc<TrackerHttpApiCoreContainer> {
6551
Arc::new(TrackerHttpApiCoreContainer {
66-
core_config: tracker_core_container.core_config.clone(),
67-
in_memory_torrent_repository: tracker_core_container.in_memory_torrent_repository.clone(),
68-
keys_handler: tracker_core_container.keys_handler.clone(),
69-
whitelist_manager: tracker_core_container.whitelist_manager.clone(),
52+
tracker_core_container: tracker_core_container.clone(),
7053

7154
http_stats_repository: http_tracker_core_container.http_stats_repository.clone(),
7255

‎src/container.rs

+1-16
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,6 @@ use torrust_tracker_configuration::{Configuration, HttpApi, HttpTracker, UdpTrac
1313
use torrust_udp_tracker_server::container::UdpTrackerServerContainer;
1414
use tracing::instrument;
1515

16-
/* todo: remove duplicate code.
17-
18-
Use containers from packages as AppContainer fields:
19-
20-
- bittorrent_udp_tracker_core::container::UdpTrackerCoreContainer
21-
- bittorrent_http_tracker_core::container::HttpTrackerCoreContainer
22-
- torrust_udp_tracker_server::container::UdpTrackerServerContainer
23-
24-
Container initialization is duplicated.
25-
*/
26-
2716
pub struct AppContainer {
2817
pub tracker_core_container: Arc<TrackerCoreContainer>,
2918

@@ -149,11 +138,7 @@ impl AppContainer {
149138
#[must_use]
150139
pub fn tracker_http_api_container(&self, http_api_config: &Arc<HttpApi>) -> TrackerHttpApiCoreContainer {
151140
TrackerHttpApiCoreContainer {
152-
core_config: self.tracker_core_container.core_config.clone(),
153-
in_memory_torrent_repository: self.tracker_core_container.in_memory_torrent_repository.clone(),
154-
keys_handler: self.tracker_core_container.keys_handler.clone(),
155-
whitelist_manager: self.tracker_core_container.whitelist_manager.clone(),
156-
141+
tracker_core_container: self.tracker_core_container.clone(),
157142
http_api_config: http_api_config.clone(),
158143
ban_service: self.udp_ban_service.clone(),
159144
http_stats_repository: self.http_stats_repository.clone(),

0 commit comments

Comments
 (0)