- main
- manifest
- deps
- main
- Install
- Run
use chrono::prelude::*;
use fastly::geo::geo_lookup;
use fastly::{Error, Request, Response};
#[fastly::main]
fn main(req: Request) -> Result<Response, Error> {
let dt = Utc.with_ymd_and_hms(2014, 11, 28, 12, 0, 9).unwrap();
let fixed_dt = dt.with_timezone(&FixedOffset::east_opt(9 * 3600).unwrap());
let geo = req.get_client_ip_addr().and_then(geo_lookup).unwrap();
match geo.utc_offset() {
Some(fastly_offset) => {
let fixed_offset = FixedOffset::east_opt(fastly_offset.whole_seconds()).unwrap();
let _fixed_dt = dt.with_timezone(&fixed_offset);
}
None => {println!("The geolocation database does not have a time zone offset for this IP address");}
}
let tt = "2014-11-28T12:00:09Z".parse::<DateTime<Utc>>().unwrap();
assert_eq!(tt.clone(), dt.clone());
let tt = "2014-11-28T21:00:09+09:00".parse::<DateTime<Utc>>().unwrap();
assert_eq!(tt.clone(), dt.clone());
let tt = "2014-11-28T21:00:09+09:00".parse::<DateTime<FixedOffset>>().unwrap();
assert_eq!(tt, fixed_dt.clone());
let tt = DateTime::parse_from_str("2014-11-28 21:00:09 +09:00", "%Y-%m-%d %H:%M:%S %z").unwrap();
assert_eq!(tt.clone(), fixed_dt.clone());
let tt = DateTime::parse_from_rfc2822("Fri, 28 Nov 2014 21:00:09 +0900").unwrap();
assert_eq!(tt.clone(), fixed_dt.clone());
let tt = DateTime::parse_from_rfc3339("2014-11-28T21:00:09+09:00").unwrap();
assert_eq!(tt.clone(), fixed_dt.clone());
let tt = NaiveDateTime::parse_from_str("2014-11-28 12:00:09", "%Y-%m-%d %H:%M:%S").unwrap().and_utc();
assert_eq!(tt.clone(), dt.clone());
let tt = NaiveDateTime::parse_from_str("Fri Nov 28 12:00:09 2014", "%a %b %e %T %Y").unwrap().and_utc();
assert_eq!(tt.clone(), dt.clone());
assert_eq!(dt.to_rfc2822(), "Fri, 28 Nov 2014 12:00:09 +0000");
assert_eq!(dt.to_rfc3339(), "2014-11-28T12:00:09+00:00");
assert_eq!(dt.format("%s").to_string(), "1417176009");
assert_eq!(dt.to_string(), "2014-11-28 12:00:09 UTC");
assert_eq!(dt.format("%Y-%m-%d %H:%M:%S").to_string(), "2014-11-28 12:00:09");
assert_eq!(dt.format("%a %b %e %T %Y").to_string(), "Fri Nov 28 12:00:09 2014");
Ok(Response::new())
}