]> Untitled Git - lemmy.git/commitdiff
Merge branch 'main' into federation-authorisation
authorFelix Ableitner <me@nutomic.com>
Fri, 7 Aug 2020 13:19:08 +0000 (15:19 +0200)
committerFelix Ableitner <me@nutomic.com>
Fri, 7 Aug 2020 13:19:08 +0000 (15:19 +0200)
1  2 
server/src/apub/community.rs
server/src/apub/inbox/activities/delete.rs
server/src/apub/inbox/activities/remove.rs
server/src/apub/inbox/activities/undo.rs
server/src/apub/user.rs

index 3773b8fb4d5ab59faeb47961fa84ddfb75e0e4ce,549d9349f6bf67881a20eca94ae143ecf915e3f2..8b522b447a6dcd6bd20e66a84c96f74fff27d0c9
@@@ -341,30 -334,50 +341,56 @@@ impl FromApub for CommunityForm 
        .unwrap();
  
      let creator = get_or_fetch_and_upsert_user(creator_uri, client, pool).await?;
 +    let name = group
 +      .inner
 +      .name()
 +      .unwrap()
 +      .as_one()
 +      .unwrap()
 +      .as_xsd_string()
 +      .unwrap()
 +      .to_string();
 +    let title = group.inner.preferred_username().unwrap().to_string();
 +    // TODO: should be parsed as html and tags like <script> removed (or use markdown source)
 +    //       -> same for post.content etc
 +    let description = group
 +      .inner
 +      .content()
 +      .map(|s| s.as_single_xsd_string().unwrap().into());
 +    check_slurs(&name)?;
 +    check_slurs(&title)?;
 +    check_slurs_opt(&description)?;
  
+     let icon = match group.icon() {
+       Some(any_image) => Some(
+         Image::from_any_base(any_image.as_one().unwrap().clone())
+           .unwrap()
+           .unwrap()
+           .url()
+           .unwrap()
+           .as_single_xsd_any_uri()
+           .map(|u| u.to_string()),
+       ),
+       None => None,
+     };
+     let banner = match group.image() {
+       Some(any_image) => Some(
+         Image::from_any_base(any_image.as_one().unwrap().clone())
+           .unwrap()
+           .unwrap()
+           .url()
+           .unwrap()
+           .as_single_xsd_any_uri()
+           .map(|u| u.to_string()),
+       ),
+       None => None,
+     };
      Ok(CommunityForm {
 -      name: group
 -        .inner
 -        .name()
 -        .unwrap()
 -        .as_one()
 -        .unwrap()
 -        .as_xsd_string()
 -        .unwrap()
 -        .into(),
 -      title: group.inner.preferred_username().unwrap().to_string(),
 -      // TODO: should be parsed as html and tags like <script> removed (or use markdown source)
 -      //       -> same for post.content etc
 -      description: group
 -        .inner
 -        .content()
 -        .map(|s| s.as_single_xsd_string().unwrap().into()),
 +      name,
 +      title,
 +      description,
        category_id: group.ext_one.category.identifier.parse::<i32>()?,
        creator_id: creator.id,
        removed: None,
index eb042da9d5fe0a6e2503b4c4411970a8020de0f3,c20335fec8e0e03421e44672c90e9aaae3442f8b..58338ab4da3c93d77a25e6679fd9724af7fd9c39
@@@ -207,20 -211,30 +213,35 @@@ impl ActorType for User_ 
  impl FromApub for UserForm {
    type ApubType = PersonExt;
    /// Parse an ActivityPub person received from another instance into a Lemmy user.
 -  async fn from_apub(person: &PersonExt, _: &Client, _: &DbPool) -> Result<Self, LemmyError> {
 +  async fn from_apub(
 +    person: &PersonExt,
 +    _: &Client,
 +    _: &DbPool,
 +    expected_domain: Option<Url>,
 +  ) -> Result<Self, LemmyError> {
      let avatar = match person.icon() {
-       Some(any_image) => Image::from_any_base(any_image.as_one().unwrap().clone())
-         .unwrap()
-         .unwrap()
-         .url()
-         .unwrap()
-         .as_single_xsd_any_uri()
-         .map(|u| u.to_string()),
+       Some(any_image) => Some(
+         Image::from_any_base(any_image.as_one().unwrap().clone())
+           .unwrap()
+           .unwrap()
+           .url()
+           .unwrap()
+           .as_single_xsd_any_uri()
+           .map(|u| u.to_string()),
+       ),
+       None => None,
+     };
+     let banner = match person.image() {
+       Some(any_image) => Some(
+         Image::from_any_base(any_image.as_one().unwrap().clone())
+           .unwrap()
+           .unwrap()
+           .url()
+           .unwrap()
+           .as_single_xsd_any_uri()
+           .map(|u| u.to_string()),
+       ),
        None => None,
      };