///|
/// Content-Digest header (RFC 9530)
pub(all) struct ContentDigest {
entries : Array[(String, DigestValue)]
} derive(Eq)
///|
pub fn ContentDigest::parse(
input : String,
) -> Result[ContentDigest, DigestFieldsError] {
let s = df_trim(input)
if s.length() == 0 {
return Err(Empty)
}
match df_parse_dictionary(s, df_parse_byte_sequence) {
Ok(entries) => Ok({ entries, })
Err(e) => Err(e)
}
}
///|
pub fn ContentDigest::entries(
self : ContentDigest,
) -> Array[(String, DigestValue)] {
self.entries
}
///|
pub fn ContentDigest::get(
self : ContentDigest,
algorithm : String,
) -> DigestValue? {
let key = df_to_lower_case(algorithm)
let mut idx = 0
while idx < self.entries.length() {
let (alg, val) = self.entries[idx]
if alg == key {
return Some(val)
}
idx = idx + 1
}
None
}
///|
pub fn ContentDigest::to_string(self : ContentDigest) -> String {
let mut result = ""
let mut idx = 0
while idx < self.entries.length() {
if idx > 0 {
result = result + ", "
}
let (alg, val) = self.entries[idx]
result = result + alg + "=" + val.to_string()
idx = idx + 1
}
result
}
///|
/// Repr-Digest header (RFC 9530)
pub(all) struct ReprDigest {
entries : Array[(String, DigestValue)]
} derive(Eq)
///|
pub fn ReprDigest::parse(
input : String,
) -> Result[ReprDigest, DigestFieldsError] {
let s = df_trim(input)
if s.length() == 0 {
return Err(Empty)
}
match df_parse_dictionary(s, df_parse_byte_sequence) {
Ok(entries) => Ok({ entries, })
Err(e) => Err(e)
}
}
///|
pub fn ReprDigest::entries(self : ReprDigest) -> Array[(String, DigestValue)] {
self.entries
}
///|
pub fn ReprDigest::get(self : ReprDigest, algorithm : String) -> DigestValue? {
let key = df_to_lower_case(algorithm)
let mut idx = 0
while idx < self.entries.length() {
let (alg, val) = self.entries[idx]
if alg == key {
return Some(val)
}
idx = idx + 1
}
None
}
///|
pub fn ReprDigest::to_string(self : ReprDigest) -> String {
let mut result = ""
let mut idx = 0
while idx < self.entries.length() {
if idx > 0 {
result = result + ", "
}
let (alg, val) = self.entries[idx]
result = result + alg + "=" + val.to_string()
idx = idx + 1
}
result
}