]> git.proxmox.com Git - proxmox-backup.git/blob - src/api2/node/time.rs
tools.rs: implement file_read_firstline
[proxmox-backup.git] / src / api2 / node / time.rs
1 use failure::*;
2
3 use crate::tools;
4 use crate::api::schema::*;
5 use crate::api::router::*;
6 use serde_json::{json, Value};
7
8 use chrono::prelude::*;
9
10 fn read_etc_localtime() -> Result<String, Error> {
11
12 let line = tools::file_read_firstline("/etc/timezone")?;
13
14 Ok(line.trim().to_owned())
15 }
16
17 fn get_time(_param: Value, _info: &ApiMethod) -> Result<Value, Error> {
18
19 let datetime = Local::now();
20 let offset = datetime.offset();
21 let time = datetime.timestamp();
22 let localtime = time + (offset.fix().local_minus_utc() as i64);
23
24 Ok(json!({
25 "timezone": read_etc_localtime()?,
26 "time": time,
27 "localtime": localtime,
28 }))
29 }
30
31 pub fn router() -> Router {
32
33 let route = Router::new()
34 .get(ApiMethod::new(
35 get_time,
36 ObjectSchema::new("Read server time and time zone settings.")));
37
38 route
39 }