gproxy_protocol/protocol/gemini/common/
citation.rs1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5use super::ExtraFields;
6
7#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8#[serde(rename_all = "camelCase")]
9pub struct CitationMetadata {
10 #[serde(default, skip_serializing_if = "Vec::is_empty")]
11 pub citation_sources: Vec<CitationSource>,
12 #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
13 pub extra: ExtraFields,
14}
15
16#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
17#[serde(rename_all = "camelCase")]
18pub struct CitationSource {
19 #[serde(skip_serializing_if = "Option::is_none")]
20 pub start_index: Option<i32>,
21 #[serde(skip_serializing_if = "Option::is_none")]
22 pub end_index: Option<i32>,
23 #[serde(skip_serializing_if = "Option::is_none")]
24 pub uri: Option<String>,
25 #[serde(skip_serializing_if = "Option::is_none")]
26 pub license: Option<String>,
27 #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
28 pub extra: ExtraFields,
29}