1use serde::{Deserialize, Serialize};
2
3#[derive(Serialize, Deserialize, Debug, Clone)]
4pub struct OutputLicenseRuleReference {
5 pub identifier: String,
6 pub license_expression: String,
7 pub is_license_text: bool,
8 pub is_license_notice: bool,
9 pub is_license_reference: bool,
10 pub is_license_tag: bool,
11 pub is_license_clue: bool,
12 pub is_license_intro: bool,
13 #[serde(default, skip_serializing_if = "Option::is_none")]
14 pub language: Option<String>,
15 #[serde(default, skip_serializing_if = "Option::is_none")]
16 pub rule_url: Option<String>,
17 #[serde(default)]
18 pub is_required_phrase: bool,
19 #[serde(default)]
20 pub skip_for_required_phrase_generation: bool,
21 #[serde(default, skip_serializing_if = "Vec::is_empty")]
22 pub replaced_by: Vec<String>,
23 #[serde(default)]
24 pub is_continuous: bool,
25 #[serde(default)]
26 pub is_synthetic: bool,
27 #[serde(default)]
28 pub is_from_license: bool,
29 #[serde(default)]
30 pub length: usize,
31 #[serde(default, skip_serializing_if = "Option::is_none")]
32 pub relevance: Option<u8>,
33 #[serde(default, skip_serializing_if = "Option::is_none")]
34 pub minimum_coverage: Option<u8>,
35 #[serde(default, skip_serializing_if = "Vec::is_empty")]
36 pub referenced_filenames: Vec<String>,
37 #[serde(default, skip_serializing_if = "Option::is_none")]
38 pub notes: Option<String>,
39 #[serde(default, skip_serializing_if = "Vec::is_empty")]
40 pub ignorable_copyrights: Vec<String>,
41 #[serde(default, skip_serializing_if = "Vec::is_empty")]
42 pub ignorable_holders: Vec<String>,
43 #[serde(default, skip_serializing_if = "Vec::is_empty")]
44 pub ignorable_authors: Vec<String>,
45 #[serde(default, skip_serializing_if = "Vec::is_empty")]
46 pub ignorable_urls: Vec<String>,
47 #[serde(default, skip_serializing_if = "Vec::is_empty")]
48 pub ignorable_emails: Vec<String>,
49 #[serde(default, skip_serializing_if = "Option::is_none")]
50 pub text: Option<String>,
51}
52
53impl From<&crate::models::LicenseRuleReference> for OutputLicenseRuleReference {
54 fn from(value: &crate::models::LicenseRuleReference) -> Self {
55 Self {
56 identifier: value.identifier.clone(),
57 license_expression: value.license_expression.clone(),
58 is_license_text: value.is_license_text,
59 is_license_notice: value.is_license_notice,
60 is_license_reference: value.is_license_reference,
61 is_license_tag: value.is_license_tag,
62 is_license_clue: value.is_license_clue,
63 is_license_intro: value.is_license_intro,
64 language: value.language.clone(),
65 rule_url: value.rule_url.clone(),
66 is_required_phrase: value.is_required_phrase,
67 skip_for_required_phrase_generation: value.skip_for_required_phrase_generation,
68 replaced_by: value.replaced_by.clone(),
69 is_continuous: value.is_continuous,
70 is_synthetic: value.is_synthetic,
71 is_from_license: value.is_from_license,
72 length: value.length,
73 relevance: value.relevance,
74 minimum_coverage: value.minimum_coverage,
75 referenced_filenames: value.referenced_filenames.clone(),
76 notes: value.notes.clone(),
77 ignorable_copyrights: value.ignorable_copyrights.clone(),
78 ignorable_holders: value.ignorable_holders.clone(),
79 ignorable_authors: value.ignorable_authors.clone(),
80 ignorable_urls: value.ignorable_urls.clone(),
81 ignorable_emails: value.ignorable_emails.clone(),
82 text: value.text.clone(),
83 }
84 }
85}
86
87impl TryFrom<&OutputLicenseRuleReference> for crate::models::LicenseRuleReference {
88 type Error = String;
89 fn try_from(value: &OutputLicenseRuleReference) -> Result<Self, Self::Error> {
90 Ok(Self {
91 identifier: value.identifier.clone(),
92 license_expression: value.license_expression.clone(),
93 is_license_text: value.is_license_text,
94 is_license_notice: value.is_license_notice,
95 is_license_reference: value.is_license_reference,
96 is_license_tag: value.is_license_tag,
97 is_license_clue: value.is_license_clue,
98 is_license_intro: value.is_license_intro,
99 language: value.language.clone(),
100 rule_url: value.rule_url.clone(),
101 is_required_phrase: value.is_required_phrase,
102 skip_for_required_phrase_generation: value.skip_for_required_phrase_generation,
103 replaced_by: value.replaced_by.clone(),
104 is_continuous: value.is_continuous,
105 is_synthetic: value.is_synthetic,
106 is_from_license: value.is_from_license,
107 length: value.length,
108 relevance: value.relevance,
109 minimum_coverage: value.minimum_coverage,
110 referenced_filenames: value.referenced_filenames.clone(),
111 notes: value.notes.clone(),
112 ignorable_copyrights: value.ignorable_copyrights.clone(),
113 ignorable_holders: value.ignorable_holders.clone(),
114 ignorable_authors: value.ignorable_authors.clone(),
115 ignorable_urls: value.ignorable_urls.clone(),
116 ignorable_emails: value.ignorable_emails.clone(),
117 text: value.text.clone(),
118 })
119 }
120}