]> Untitled Git - lemmy.git/blob - crates/apub_lib/src/lib.rs
Rewrite remaining activities (#1712)
[lemmy.git] / crates / apub_lib / src / lib.rs
1 pub mod values;
2
3 use activitystreams::error::DomainError;
4 pub use lemmy_apub_lib_derive::*;
5 use lemmy_utils::LemmyError;
6 use lemmy_websocket::LemmyContext;
7 use url::Url;
8
9 pub trait ActivityFields {
10   fn id_unchecked(&self) -> &Url;
11   fn actor(&self) -> &Url;
12   fn cc(&self) -> Vec<Url>;
13 }
14
15 #[async_trait::async_trait(?Send)]
16 pub trait ActivityHandler {
17   async fn verify(
18     &self,
19     context: &LemmyContext,
20     request_counter: &mut i32,
21   ) -> Result<(), LemmyError>;
22
23   async fn receive(
24     self,
25     context: &LemmyContext,
26     request_counter: &mut i32,
27   ) -> Result<(), LemmyError>;
28 }
29
30 pub fn verify_domains_match(a: &Url, b: &Url) -> Result<(), LemmyError> {
31   if a.domain() != b.domain() {
32     return Err(DomainError.into());
33   }
34   Ok(())
35 }
36
37 pub fn verify_urls_match(a: &Url, b: &Url) -> Result<(), LemmyError> {
38   if a != b {
39     return Err(DomainError.into());
40   }
41   Ok(())
42 }