]> Untitled Git - lemmy.git/blobdiff - crates/apub/src/protocol/objects/instance.rs
implement language tags for site/community in db and api (#2434)
[lemmy.git] / crates / apub / src / protocol / objects / instance.rs
index 353d6500e196e4f5edb029420b8ad05a707859f4..2df9dcc9547f4fff8de595a9a93ee0c2a52746c5 100644 (file)
@@ -1,14 +1,17 @@
 use crate::{
   objects::instance::ApubSite,
-  protocol::{ImageObject, Source},
+  protocol::{objects::LanguageTag, ImageObject, Source},
+};
+use activitypub_federation::{
+  core::{object_id::ObjectId, signatures::PublicKey},
+  deser::{helpers::deserialize_skip_error, values::MediaTypeHtml},
 };
 use chrono::{DateTime, FixedOffset};
-use lemmy_apub_lib::{object_id::ObjectId, signatures::PublicKey, values::MediaTypeHtml};
 use serde::{Deserialize, Serialize};
 use serde_with::skip_serializing_none;
 use url::Url;
 
-#[derive(Clone, Copy, Debug, Deserialize, Serialize, PartialEq)]
+#[derive(Clone, Copy, Debug, Deserialize, Serialize, PartialEq, Eq)]
 pub enum InstanceType {
   Application,
   Service,
@@ -30,8 +33,7 @@ pub struct Instance {
 
   // sidebar
   pub(crate) content: Option<String>,
-  #[serde(default)]
-  #[serde(deserialize_with = "crate::deserialize_skip_error")]
+  #[serde(deserialize_with = "deserialize_skip_error", default)]
   pub(crate) source: Option<Source>,
   // short instance description
   pub(crate) summary: Option<String>,
@@ -40,6 +42,8 @@ pub struct Instance {
   pub(crate) icon: Option<ImageObject>,
   /// instance banner
   pub(crate) image: Option<ImageObject>,
+  #[serde(default)]
+  pub(crate) language: Vec<LanguageTag>,
   pub(crate) published: DateTime<FixedOffset>,
   pub(crate) updated: Option<DateTime<FixedOffset>>,
 }