Some checks failed
lint / lint (push) Has been cancelled
test / unit (push) Has been cancelled
test / integration (push) Has been cancelled
lint / lint (pull_request) Failing after 9m25s
test / unit (pull_request) Successful in 16m57s
test / integration (pull_request) Failing after 17m29s
50 lines
1.4 KiB
Rust
50 lines
1.4 KiB
Rust
use std::sync::Arc;
|
|
|
|
use crate::content::ApObjectHandler;
|
|
use crate::repository::FederationRepository;
|
|
use crate::user::ApUserRepository;
|
|
use domain::ports::EventPublisher;
|
|
|
|
#[derive(Clone)]
|
|
pub struct FederationData {
|
|
pub(crate) federation_repo: Arc<dyn FederationRepository>,
|
|
pub(crate) user_repo: Arc<dyn ApUserRepository>,
|
|
pub(crate) object_handler: Arc<dyn ApObjectHandler>,
|
|
pub(crate) base_url: String,
|
|
pub(crate) domain: String,
|
|
pub(crate) allow_registration: bool,
|
|
pub(crate) software_name: String,
|
|
#[allow(dead_code)]
|
|
pub(crate) event_publisher: Option<Arc<dyn EventPublisher>>,
|
|
}
|
|
|
|
impl FederationData {
|
|
pub fn new(
|
|
federation_repo: Arc<dyn FederationRepository>,
|
|
user_repo: Arc<dyn ApUserRepository>,
|
|
object_handler: Arc<dyn ApObjectHandler>,
|
|
base_url: String,
|
|
allow_registration: bool,
|
|
software_name: String,
|
|
event_publisher: Option<Arc<dyn EventPublisher>>,
|
|
) -> Self {
|
|
let domain = base_url
|
|
.trim_start_matches("https://")
|
|
.trim_start_matches("http://")
|
|
.split('/')
|
|
.next()
|
|
.unwrap_or("")
|
|
.to_string();
|
|
Self {
|
|
federation_repo,
|
|
user_repo,
|
|
object_handler,
|
|
base_url,
|
|
domain,
|
|
allow_registration,
|
|
software_name,
|
|
event_publisher,
|
|
}
|
|
}
|
|
}
|