mirror of
https://github.com/scsibug/nostr-rs-relay.git
synced 2025-03-22 03:22:27 -04:00
Only lowercase and even-length tag values are stored as binary BLOBs. Previously there was an error which search results from being returned if the tag value was mixed-case and could be interpreted as hex. A new database migration has been created to repair the `tag` table for existing relays. fixes: https://todo.sr.ht/~gheartsfield/nostr-rs-relay/37
34 lines
768 B
Rust
34 lines
768 B
Rust
//! Common utility functions
|
|
use std::time::SystemTime;
|
|
|
|
/// Seconds since 1970.
|
|
pub fn unix_time() -> u64 {
|
|
SystemTime::now()
|
|
.duration_since(SystemTime::UNIX_EPOCH)
|
|
.map(|x| x.as_secs())
|
|
.unwrap_or(0)
|
|
}
|
|
|
|
/// Check if a string contains only hex characters.
|
|
pub fn is_hex(s: &str) -> bool {
|
|
s.chars().all(|x| char::is_ascii_hexdigit(&x))
|
|
}
|
|
|
|
/// Check if a string contains only lower-case hex chars.
|
|
pub fn is_lower_hex(s: &str) -> bool {
|
|
s.chars().all(|x| {
|
|
(char::is_ascii_lowercase(&x) || char::is_ascii_digit(&x)) && char::is_ascii_hexdigit(&x)
|
|
})
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::*;
|
|
|
|
#[test]
|
|
fn lower_hex() {
|
|
let hexstr = "abcd0123";
|
|
assert_eq!(is_lower_hex(hexstr), true);
|
|
}
|
|
}
|