Use skip_serializing_none for nodeinfo (fixes #4702)

This commit is contained in:
Felix Ableitner 2024-05-06 11:44:22 +02:00
parent b152be7951
commit 191dc39acf
3 changed files with 8 additions and 1 deletions

1
Cargo.lock generated
View File

@ -2940,6 +2940,7 @@ dependencies = [
"reqwest-middleware", "reqwest-middleware",
"rss", "rss",
"serde", "serde",
"serde_with",
"tokio", "tokio",
"tracing", "tracing",
"url", "url",

View File

@ -34,4 +34,5 @@ once_cell = { workspace = true }
tracing = { workspace = true } tracing = { workspace = true }
tokio = { workspace = true } tokio = { workspace = true }
urlencoding = { workspace = true } urlencoding = { workspace = true }
serde_with.workspace = true
rss = "2.0.7" rss = "2.0.7"

View File

@ -9,6 +9,7 @@ use lemmy_utils::{
VERSION, VERSION,
}; };
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use serde_with::skip_serializing_none;
use url::Url; use url::Url;
pub fn config(cfg: &mut web::ServiceConfig) { pub fn config(cfg: &mut web::ServiceConfig) {
@ -44,7 +45,7 @@ async fn node_info(context: web::Data<LemmyContext>) -> Result<HttpResponse, Err
.ok_or(ErrorBadRequest(LemmyError::from(anyhow!("not_found"))))?; .ok_or(ErrorBadRequest(LemmyError::from(anyhow!("not_found"))))?;
let protocols = if site_view.local_site.federation_enabled { let protocols = if site_view.local_site.federation_enabled {
Some(vec!["activitypub".to_string()]) None
} else { } else {
None None
}; };
@ -84,6 +85,7 @@ struct NodeInfoWellKnownLinks {
pub href: Url, pub href: Url,
} }
#[skip_serializing_none]
#[derive(Serialize, Deserialize, Debug, Default)] #[derive(Serialize, Deserialize, Debug, Default)]
#[serde(rename_all = "camelCase", default)] #[serde(rename_all = "camelCase", default)]
pub struct NodeInfo { pub struct NodeInfo {
@ -94,6 +96,7 @@ pub struct NodeInfo {
pub open_registrations: Option<bool>, pub open_registrations: Option<bool>,
} }
#[skip_serializing_none]
#[derive(Serialize, Deserialize, Debug, Default)] #[derive(Serialize, Deserialize, Debug, Default)]
#[serde(default)] #[serde(default)]
pub struct NodeInfoSoftware { pub struct NodeInfoSoftware {
@ -101,6 +104,7 @@ pub struct NodeInfoSoftware {
pub version: Option<String>, pub version: Option<String>,
} }
#[skip_serializing_none]
#[derive(Serialize, Deserialize, Debug, Default)] #[derive(Serialize, Deserialize, Debug, Default)]
#[serde(rename_all = "camelCase", default)] #[serde(rename_all = "camelCase", default)]
pub struct NodeInfoUsage { pub struct NodeInfoUsage {
@ -109,6 +113,7 @@ pub struct NodeInfoUsage {
pub local_comments: Option<i64>, pub local_comments: Option<i64>,
} }
#[skip_serializing_none]
#[derive(Serialize, Deserialize, Debug, Default)] #[derive(Serialize, Deserialize, Debug, Default)]
#[serde(rename_all = "camelCase", default)] #[serde(rename_all = "camelCase", default)]
pub struct NodeInfoUsers { pub struct NodeInfoUsers {