feat: add /time

This commit is contained in:
2021-05-17 23:10:07 +08:00
parent b2ee806448
commit d0f8cd4619
4 changed files with 81 additions and 2 deletions

60
Cargo.lock generated
View File

@@ -45,6 +45,19 @@ version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "chrono"
version = "0.4.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73"
dependencies = [
"libc",
"num-integer",
"num-traits",
"time",
"winapi",
]
[[package]]
name = "cpufeatures"
version = "0.1.1"
@@ -313,6 +326,25 @@ dependencies = [
"winapi",
]
[[package]]
name = "num-integer"
version = "0.1.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db"
dependencies = [
"autocfg",
"num-traits",
]
[[package]]
name = "num-traits"
version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290"
dependencies = [
"autocfg",
]
[[package]]
name = "num_cpus"
version = "1.13.0"
@@ -425,6 +457,12 @@ dependencies = [
"unicode-xid",
]
[[package]]
name = "quick-error"
version = "1.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
[[package]]
name = "quote"
version = "1.0.9"
@@ -497,12 +535,14 @@ dependencies = [
name = "room-rs"
version = "0.1.0"
dependencies = [
"chrono",
"futures-channel",
"futures-util",
"lazy_static",
"rust_util",
"serde",
"serde_json",
"simpledateformat",
"tokio",
"tokio-tungstenite",
"tungstenite",
@@ -591,6 +631,16 @@ dependencies = [
"libc",
]
[[package]]
name = "simpledateformat"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d06fa9a6e21926f4eaf8d506dfac4243b473ca49491dc8b4feb7668cc17e0084"
dependencies = [
"chrono",
"quick-error",
]
[[package]]
name = "slab"
version = "0.4.3"
@@ -655,6 +705,16 @@ dependencies = [
"syn",
]
[[package]]
name = "time"
version = "0.1.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438"
dependencies = [
"libc",
"winapi",
]
[[package]]
name = "tinyvec"
version = "1.2.0"

View File

@@ -8,9 +8,11 @@ edition = "2018"
[dependencies]
rust_util = "0.6"
simpledateformat = "0.1"
chrono = "0.4"
tungstenite = {version = "0.13", default-features = false}
tokio-tungstenite = "0.14"
tokio = { version = "1.0.0", features = ["full"]}
tokio = { version = "1.0", features = ["full"]}
futures-util = "0.3"
lazy_static = "1.4"
futures-channel = "0.3"

View File

@@ -17,7 +17,7 @@ use tungstenite::protocol::Message;
use rust_util::XResult;
use crate::types::{PeerMap, RoomMap, Tx};
use crate::msg::{RoomMessageDown, RoomMessage, RoomMessageType, RoomMessageDownType};
use crate::slash_handles::{HandleContext, HandleTextMessage};
use crate::slash_handles::{HandleContext, HandleTextMessage, HandleTextMessageTime};
use crate::slash_handles::{HandleTextMessageExit, HandleTextMessageStatics};
use crate::slash_handles::{HandleTextMessagePass, HandleTextMessageRoom};
use crate::slash_handles::{HandleTextMessageRooms, HandleTextMessageVersion};
@@ -34,6 +34,7 @@ lazy_static! {
Box::new(HandleTextMessageRooms),
Box::new(HandleTextMessageRoom),
Box::new(HandleTextMessageVersion),
Box::new(HandleTextMessageTime),
];
handles
};

View File

@@ -3,6 +3,7 @@ use std::net::SocketAddr;
use tungstenite::Message;
use crate::msg::RoomMessageDown;
use crate::{NAME, VERSION};
use chrono::Local;
#[derive(Debug, Clone)]
pub struct HandleContext {
@@ -125,3 +126,18 @@ impl HandleTextMessage for HandleTextMessageVersion {
tx.unbounded_send(Message::Text(format!("{} - v{}", NAME, VERSION))).ok();
}
}
pub struct HandleTextMessageTime;
impl HandleTextMessage for HandleTextMessageTime {
fn is_matches(&self, _handle_context: &mut HandleContext, _tx: &Tx, _addr: SocketAddr, msg: &str) -> bool {
msg == "/time"
}
fn handle(&self, _handle_context: &mut HandleContext, tx: &Tx, _addr: SocketAddr, _msg: &str) {
simpledateformat::fmt("yyyy-MM-dd HH:mm:ss z").map(
|f| {
tx.unbounded_send(Message::Text(format!("Time: {}", f.format(&Local::now())))).ok();
}
).ok();
}
}