Skip to content

Commit 1d1e718

Browse files
committed
Replace chrono with time crate
Signed-off-by: Yuki Okushi <jtitor@2k36.org>
1 parent 5f7f472 commit 1d1e718

File tree

4 files changed

+19
-14
lines changed

4 files changed

+19
-14
lines changed

Cargo.toml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,9 @@ log = "0.4.14"
3131
version = "1.0.126"
3232
features = ["rc", "derive"]
3333

34-
[dependencies.chrono]
35-
version = "0.4.19"
36-
default-features = false
37-
features = ["clock", "serde", "std"]
34+
[dependencies.time]
35+
version = "0.3.10"
36+
features = ["serde"]
3837

3938
[dev-dependencies.async-std]
4039
version = "1.9.0"

src/cookie_store.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ impl CookieStore {
3333
impl SessionStore for CookieStore {
3434
async fn load_session(&self, cookie_value: String) -> Result<Option<Session>> {
3535
let serialized = base64::decode(&cookie_value)?;
36-
let session: Session = bincode::deserialize(&serialized)?;
36+
let session: Session = bincode::deserialize(&serialized[..])?;
3737
Ok(session.validate())
3838
}
3939

src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,9 @@ pub use session_store::SessionStore;
6363
pub use async_trait::async_trait;
6464
pub use base64;
6565
pub use blake3;
66-
pub use chrono;
6766
pub use hmac;
6867
pub use log;
6968
pub use serde;
7069
pub use serde_json;
7170
pub use sha2;
71+
pub use time;

src/session.rs

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
1-
use chrono::{DateTime, Duration, Utc};
21
use rand::RngCore;
32
use serde::{Deserialize, Serialize};
43
use std::{
54
collections::HashMap,
5+
convert::TryFrom,
66
sync::{
77
atomic::{AtomicBool, Ordering},
88
Arc, RwLock,
99
},
1010
};
11+
use time::OffsetDateTime as DateTime;
1112

1213
/// # The main session type.
1314
///
@@ -56,7 +57,7 @@ use std::{
5657
#[derive(Debug, Serialize, Deserialize)]
5758
pub struct Session {
5859
id: String,
59-
expiry: Option<DateTime<Utc>>,
60+
expiry: Option<DateTime>,
6061
data: Arc<RwLock<HashMap<String, String>>>,
6162

6263
#[serde(skip)]
@@ -355,7 +356,7 @@ impl Session {
355356
/// assert!(session.expiry().is_some());
356357
/// # Ok(()) }) }
357358
/// ```
358-
pub fn expiry(&self) -> Option<&DateTime<Utc>> {
359+
pub fn expiry(&self) -> Option<&DateTime> {
359360
self.expiry.as_ref()
360361
}
361362

@@ -368,11 +369,11 @@ impl Session {
368369
/// # fn main() -> async_session::Result { async_std::task::block_on(async {
369370
/// let mut session = Session::new();
370371
/// assert_eq!(None, session.expiry());
371-
/// session.set_expiry(chrono::Utc::now());
372+
/// session.set_expiry(time::OffsetDateTime::now_utc());
372373
/// assert!(session.expiry().is_some());
373374
/// # Ok(()) }) }
374375
/// ```
375-
pub fn set_expiry(&mut self, expiry: DateTime<Utc>) {
376+
pub fn set_expiry(&mut self, expiry: DateTime) {
376377
self.expiry = Some(expiry);
377378
}
378379

@@ -390,7 +391,7 @@ impl Session {
390391
/// # Ok(()) }) }
391392
/// ```
392393
pub fn expire_in(&mut self, ttl: std::time::Duration) {
393-
self.expiry = Some(Utc::now() + Duration::from_std(ttl).unwrap());
394+
self.expiry = Some(DateTime::now_utc() + ttl);
394395
}
395396

396397
/// predicate function to determine if this session is
@@ -415,7 +416,7 @@ impl Session {
415416
/// ```
416417
pub fn is_expired(&self) -> bool {
417418
match self.expiry {
418-
Some(expiry) => expiry < Utc::now(),
419+
Some(expiry) => expiry < DateTime::now_utc(),
419420
None => false,
420421
}
421422
}
@@ -509,7 +510,12 @@ impl Session {
509510
/// ```
510511
/// Duration from now to the expiry time of this session
511512
pub fn expires_in(&self) -> Option<std::time::Duration> {
512-
self.expiry?.signed_duration_since(Utc::now()).to_std().ok()
513+
let dur = self.expiry? - DateTime::now_utc();
514+
if dur.is_negative() {
515+
None
516+
} else {
517+
std::time::Duration::try_from(dur).ok()
518+
}
513519
}
514520

515521
/// takes the cookie value and consume this session.

0 commit comments

Comments
 (0)