csaf_walker/rolie/
roliefeed.rs1use 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}