csaf_walker/rolie/
roliefeed.rs

1use time::OffsetDateTime;
2
3#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
4pub struct RolieFeed {
5    pub feed: Feed,
6}
7
8#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
9pub struct Feed {
10    #[serde(default, skip_serializing_if = "Vec::is_empty")]
11    pub entry: Vec<Entry>,
12
13    #[serde(default, skip_serializing_if = "Vec::is_empty")]
14    pub link: Vec<Link>,
15
16    pub id: String,
17
18    pub title: String,
19
20    #[serde(default, skip_serializing_if = "Vec::is_empty")]
21    pub category: Vec<Category>,
22
23    #[serde(with = "time::serde::rfc3339")]
24    pub updated: OffsetDateTime,
25}
26
27#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
28pub struct Category {
29    pub scheme: String,
30
31    pub term: String,
32}
33
34#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
35pub struct Entry {
36    #[serde(default, skip_serializing_if = "Vec::is_empty")]
37    pub link: Vec<Link>,
38
39    pub format: Format,
40
41    pub id: String,
42
43    #[serde(with = "time::serde::rfc3339")]
44    pub published: OffsetDateTime,
45
46    pub title: String,
47
48    #[serde(with = "time::serde::rfc3339")]
49    pub updated: OffsetDateTime,
50
51    pub content: Content,
52}
53
54#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
55pub struct Content {
56    pub src: String,
57
58    #[serde(rename = "type")]
59    pub content_type: String,
60}
61
62#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
63pub struct Format {
64    pub schema: String,
65
66    pub version: String,
67}
68
69#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
70pub struct Link {
71    pub rel: String,
72
73    pub href: String,
74}