crev_data/
url.rs

1use derive_builder::Builder;
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Debug, Builder, Serialize, Deserialize, PartialEq, Eq, Hash)]
5pub struct Url {
6    pub url: String,
7    #[serde(
8        rename = "url-type",
9        skip_serializing_if = "equals_default_url_type",
10        default = "default_url_type"
11    )]
12    pub url_type: String,
13}
14
15impl Url {
16    pub fn new_git<Stringy: Into<String>>(url: Stringy) -> Self {
17        Self {
18            url: url.into(),
19            url_type: default_url_type(),
20        }
21    }
22
23    #[must_use]
24    pub fn digest(&self) -> crate::Digest {
25        let digest = crev_common::blake2b256sum(self.url.to_ascii_lowercase().as_bytes());
26        digest.into()
27    }
28}
29
30pub(crate) fn equals_default_url_type(s: &str) -> bool {
31    s == default_url_type()
32}
33
34pub(crate) fn default_url_type() -> String {
35    "git".into()
36}