nym_credential_proxy_lib/
helpers.rs1use rand::RngCore;
5use rand::rngs::OsRng;
6use time::OffsetDateTime;
7use tracing::{debug, info, warn};
8use uuid::Uuid;
9
10pub fn random_uuid() -> Uuid {
11 let mut bytes = [0u8; 16];
12 let mut rng = OsRng;
13 rng.fill_bytes(&mut bytes);
14 Uuid::from_bytes(bytes)
15}
16
17pub struct LockTimer {
18 created: OffsetDateTime,
19 message: String,
20}
21
22impl LockTimer {
23 pub fn new<S: Into<String>>(message: S) -> Self {
24 LockTimer {
25 message: message.into(),
26 ..Default::default()
27 }
28 }
29}
30
31impl Drop for LockTimer {
32 fn drop(&mut self) {
33 let time_taken = OffsetDateTime::now_utc() - self.created;
34 let time_taken_formatted = humantime::format_duration(time_taken.unsigned_abs());
35 if time_taken > time::Duration::SECOND * 10 {
36 warn!(time_taken = %time_taken_formatted, "{}", self.message)
37 } else if time_taken > time::Duration::SECOND * 5 {
38 info!(time_taken = %time_taken_formatted, "{}", self.message)
39 } else {
40 debug!(time_taken = %time_taken_formatted, "{}", self.message)
41 };
42 }
43}
44
45impl Default for LockTimer {
46 fn default() -> Self {
47 LockTimer {
48 created: OffsetDateTime::now_utc(),
49 message: "released the lock".to_string(),
50 }
51 }
52}
53
54