Skip to main content

provenant/output_schema/
license_reference.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Serialize, Deserialize, Debug, Clone)]
4pub struct OutputLicenseReference {
5    #[serde(default, skip_serializing_if = "Option::is_none")]
6    pub key: Option<String>,
7    #[serde(default, skip_serializing_if = "Option::is_none")]
8    pub language: Option<String>,
9    pub name: String,
10    pub short_name: String,
11    #[serde(default, skip_serializing_if = "Option::is_none")]
12    pub owner: Option<String>,
13    #[serde(default, skip_serializing_if = "Option::is_none")]
14    pub homepage_url: Option<String>,
15    pub spdx_license_key: String,
16    #[serde(default, skip_serializing_if = "Vec::is_empty")]
17    pub other_spdx_license_keys: Vec<String>,
18    #[serde(default, skip_serializing_if = "Option::is_none")]
19    pub osi_license_key: Option<String>,
20    #[serde(default, skip_serializing_if = "Vec::is_empty")]
21    pub text_urls: Vec<String>,
22    #[serde(default, skip_serializing_if = "Option::is_none")]
23    pub osi_url: Option<String>,
24    #[serde(default, skip_serializing_if = "Option::is_none")]
25    pub faq_url: Option<String>,
26    #[serde(default, skip_serializing_if = "Vec::is_empty")]
27    pub other_urls: Vec<String>,
28    #[serde(default, skip_serializing_if = "Option::is_none")]
29    pub category: Option<String>,
30    #[serde(default)]
31    pub is_exception: bool,
32    #[serde(default)]
33    pub is_unknown: bool,
34    #[serde(default)]
35    pub is_generic: bool,
36    #[serde(default, skip_serializing_if = "Option::is_none")]
37    pub notes: Option<String>,
38    #[serde(default, skip_serializing_if = "Option::is_none")]
39    pub minimum_coverage: Option<u8>,
40    #[serde(default, skip_serializing_if = "Option::is_none")]
41    pub standard_notice: Option<String>,
42    #[serde(default, skip_serializing_if = "Vec::is_empty")]
43    pub ignorable_copyrights: Vec<String>,
44    #[serde(default, skip_serializing_if = "Vec::is_empty")]
45    pub ignorable_holders: Vec<String>,
46    #[serde(default, skip_serializing_if = "Vec::is_empty")]
47    pub ignorable_authors: Vec<String>,
48    #[serde(default, skip_serializing_if = "Vec::is_empty")]
49    pub ignorable_urls: Vec<String>,
50    #[serde(default, skip_serializing_if = "Vec::is_empty")]
51    pub ignorable_emails: Vec<String>,
52    #[serde(default, skip_serializing_if = "Option::is_none")]
53    pub scancode_url: Option<String>,
54    #[serde(default, skip_serializing_if = "Option::is_none")]
55    pub licensedb_url: Option<String>,
56    #[serde(default, skip_serializing_if = "Option::is_none")]
57    pub spdx_url: Option<String>,
58    pub text: String,
59}
60
61impl From<&crate::models::LicenseReference> for OutputLicenseReference {
62    fn from(value: &crate::models::LicenseReference) -> Self {
63        Self {
64            key: value.key.clone(),
65            language: value.language.clone(),
66            name: value.name.clone(),
67            short_name: value.short_name.clone(),
68            owner: value.owner.clone(),
69            homepage_url: value.homepage_url.clone(),
70            spdx_license_key: value.spdx_license_key.clone(),
71            other_spdx_license_keys: value.other_spdx_license_keys.clone(),
72            osi_license_key: value.osi_license_key.clone(),
73            text_urls: value.text_urls.clone(),
74            osi_url: value.osi_url.clone(),
75            faq_url: value.faq_url.clone(),
76            other_urls: value.other_urls.clone(),
77            category: value.category.clone(),
78            is_exception: value.is_exception,
79            is_unknown: value.is_unknown,
80            is_generic: value.is_generic,
81            notes: value.notes.clone(),
82            minimum_coverage: value.minimum_coverage,
83            standard_notice: value.standard_notice.clone(),
84            ignorable_copyrights: value.ignorable_copyrights.clone(),
85            ignorable_holders: value.ignorable_holders.clone(),
86            ignorable_authors: value.ignorable_authors.clone(),
87            ignorable_urls: value.ignorable_urls.clone(),
88            ignorable_emails: value.ignorable_emails.clone(),
89            scancode_url: value.scancode_url.clone(),
90            licensedb_url: value.licensedb_url.clone(),
91            spdx_url: value.spdx_url.clone(),
92            text: value.text.clone(),
93        }
94    }
95}
96
97impl TryFrom<&OutputLicenseReference> for crate::models::LicenseReference {
98    type Error = String;
99    fn try_from(value: &OutputLicenseReference) -> Result<Self, Self::Error> {
100        Ok(Self {
101            key: value.key.clone(),
102            language: value.language.clone(),
103            name: value.name.clone(),
104            short_name: value.short_name.clone(),
105            owner: value.owner.clone(),
106            homepage_url: value.homepage_url.clone(),
107            spdx_license_key: value.spdx_license_key.clone(),
108            other_spdx_license_keys: value.other_spdx_license_keys.clone(),
109            osi_license_key: value.osi_license_key.clone(),
110            text_urls: value.text_urls.clone(),
111            osi_url: value.osi_url.clone(),
112            faq_url: value.faq_url.clone(),
113            other_urls: value.other_urls.clone(),
114            category: value.category.clone(),
115            is_exception: value.is_exception,
116            is_unknown: value.is_unknown,
117            is_generic: value.is_generic,
118            notes: value.notes.clone(),
119            minimum_coverage: value.minimum_coverage,
120            standard_notice: value.standard_notice.clone(),
121            ignorable_copyrights: value.ignorable_copyrights.clone(),
122            ignorable_holders: value.ignorable_holders.clone(),
123            ignorable_authors: value.ignorable_authors.clone(),
124            ignorable_urls: value.ignorable_urls.clone(),
125            ignorable_emails: value.ignorable_emails.clone(),
126            scancode_url: value.scancode_url.clone(),
127            licensedb_url: value.licensedb_url.clone(),
128            spdx_url: value.spdx_url.clone(),
129            text: value.text.clone(),
130        })
131    }
132}