parse_sap_atom_feed/atom/
collection.rs

1use super::link::AtomLink;
2use crate::{
3    deserializers::{default_sap_content_version, edm_string::to_bool},
4    xml::{default_false, default_true},
5};
6use serde::{Deserialize, Serialize};
7
8// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
9/// Represents an `<atom:collection>` tag
10#[derive(Debug, Serialize, Deserialize)]
11pub struct AtomCollection {
12    #[serde(
13        rename = "@creatable",
14        deserialize_with = "to_bool",
15        default = "default_true"
16    )]
17    pub is_creatable: bool,
18
19    #[serde(
20        rename = "@updatable",
21        deserialize_with = "to_bool",
22        default = "default_true"
23    )]
24    pub is_updatable: bool,
25
26    #[serde(
27        rename = "@deletable",
28        deserialize_with = "to_bool",
29        default = "default_true"
30    )]
31    pub is_deletable: bool,
32
33    #[serde(
34        rename = "@pageable",
35        deserialize_with = "to_bool",
36        default = "default_true"
37    )]
38    pub is_pageable: bool,
39
40    #[serde(
41        rename = "@searchable",
42        deserialize_with = "to_bool",
43        default = "default_false"
44    )]
45    pub is_searchable: bool,
46
47    #[serde(rename = "@content-version", default = "default_sap_content_version")]
48    pub content_version: String,
49    #[serde(rename = "@href")]
50    pub href: String,
51    pub title: String,
52    #[serde(rename = "member-title")]
53    pub member_title: String,
54    pub link: Option<AtomLink>,
55}
56
57impl std::str::FromStr for AtomCollection {
58    type Err = quick_xml::DeError;
59
60    fn from_str(s: &str) -> Result<Self, Self::Err> {
61        quick_xml::de::from_str(s)
62    }
63}