-pub(crate) fn deserialize_one_or_many<'de, T, D>(deserializer: D) -> Result<Vec<T>, D::Error>
-where
- T: Deserialize<'de>,
- D: Deserializer<'de>,
-{
- #[derive(Deserialize)]
- #[serde(untagged)]
- enum OneOrMany<T> {
- One(T),
- Many(Vec<T>),
- }
-
- let result: OneOrMany<T> = Deserialize::deserialize(deserializer)?;
- Ok(match result {
- OneOrMany::Many(list) => list,
- OneOrMany::One(value) => vec![value],
- })
-}
-
-pub enum EndpointType {
- Community,
- Person,
- Post,
- Comment,
- PrivateMessage,
-}
-
-/// Generates an apub endpoint for a given domain, IE xyz.tld
-pub fn generate_local_apub_endpoint(
- endpoint_type: EndpointType,
- name: &str,
- domain: &str,
-) -> Result<DbUrl, ParseError> {
- let point = match endpoint_type {
- EndpointType::Community => "c",
- EndpointType::Person => "u",
- EndpointType::Post => "post",
- EndpointType::Comment => "comment",
- EndpointType::PrivateMessage => "private_message",
- };
-
- Ok(Url::parse(&format!("{}/{}/{}", domain, point, name))?.into())
-}
-
-pub fn generate_followers_url(actor_id: &DbUrl) -> Result<DbUrl, ParseError> {
- Ok(Url::parse(&format!("{}/followers", actor_id))?.into())
-}
-
-pub fn generate_inbox_url(actor_id: &DbUrl) -> Result<DbUrl, ParseError> {
- Ok(Url::parse(&format!("{}/inbox", actor_id))?.into())
+#[derive(Clone)]
+pub(crate) struct LocalSiteData {
+ local_site: Option<LocalSite>,
+ allowed_instances: Vec<Instance>,
+ blocked_instances: Vec<Instance>,