diff --git a/Cargo.lock b/Cargo.lock index 3529ab6..69b161e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -60,7 +60,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.70", ] [[package]] @@ -71,7 +71,7 @@ checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.70", ] [[package]] @@ -151,7 +151,9 @@ dependencies = [ "lazy_static", "rocket", "rocket_dyn_templates", + "serde", "serde_json", + "serde_with", "ureq", ] @@ -205,6 +207,7 @@ dependencies = [ "iana-time-zone", "js-sys", "num-traits", + "serde", "wasm-bindgen", "windows-targets 0.52.6", ] @@ -310,6 +313,41 @@ dependencies = [ "typenum", ] +[[package]] +name = "darling" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 1.0.109", +] + +[[package]] +name = "darling_macro" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +dependencies = [ + "darling_core", + "quote", + "syn 1.0.109", +] + [[package]] name = "deranged" version = "0.3.11" @@ -355,7 +393,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn", + "syn 2.0.70", ] [[package]] @@ -732,6 +770,12 @@ dependencies = [ "cc", ] +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + [[package]] name = "idna" version = "0.5.0" @@ -1093,7 +1137,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn", + "syn 2.0.70", ] [[package]] @@ -1133,7 +1177,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn", + "syn 2.0.70", ] [[package]] @@ -1226,7 +1270,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.70", "version_check", "yansi", ] @@ -1305,7 +1349,7 @@ checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.70", ] [[package]] @@ -1416,7 +1460,7 @@ dependencies = [ "proc-macro2", "quote", "rocket_http", - "syn", + "syn 2.0.70", "unicode-xid", "version_check", ] @@ -1562,7 +1606,7 @@ checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.70", ] [[package]] @@ -1585,6 +1629,29 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_with" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678b5a069e50bf00ecd22d0cd8ddf7c236f68581b03db652061ed5eb13a312ff" +dependencies = [ + "chrono", + "serde", + "serde_with_macros", +] + +[[package]] +name = "serde_with_macros" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "sha2" version = "0.10.8" @@ -1679,12 +1746,29 @@ dependencies = [ "loom", ] +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + [[package]] name = "subtle" version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "syn" version = "2.0.70" @@ -1747,7 +1831,7 @@ checksum = "d20468752b09f49e909e55a5d338caa8bedf615594e9d80bc4c565d30faf798c" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.70", ] [[package]] @@ -1832,7 +1916,7 @@ checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.70", ] [[package]] @@ -1918,7 +2002,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.70", ] [[package]] @@ -2167,7 +2251,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn", + "syn 2.0.70", "wasm-bindgen-shared", ] @@ -2189,7 +2273,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.70", "wasm-bindgen-backend", "wasm-bindgen-shared", ] diff --git a/Cargo.toml b/Cargo.toml index fe2bd85..0475ada 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,13 @@ lazy_static = "1.5.0" rocket = "0.5.1" serde_json = "1.0.120" ureq = { version = "2.10.0", features = ["json"] } +serde = { version = "1.0", features = ["derive"] } + [dependencies.rocket_dyn_templates] version = "0.2.0" features = ["tera"] + +[dependencies.serde_with] +version = "1.9.1" +features = [ "chrono" ] diff --git a/src/lib.rs b/src/lib.rs index 0a7094d..30c59dd 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,7 +1,9 @@ use chrono::prelude::*; use lazy_static::lazy_static; +use rocket::serde::Serialize; use std::convert::Into; use std::sync::RwLock; +use serde_with::{serde_as, DisplayFromStr}; pub enum BlockchainSupported { BTC, @@ -12,10 +14,12 @@ pub enum BlockchainSupported { type BlockHeight = i64; -#[derive(Clone, Copy, PartialEq, Debug)] +#[serde_as] +#[derive(Clone, Copy, PartialEq, Debug, Serialize)] pub struct BlockchainInfo { block_period: u64, // In seconds latest_block_height: BlockHeight, + #[serde_as(as = "DisplayFromStr")] latest_block_time: DateTime, } diff --git a/src/main.rs b/src/main.rs index e878438..4ff00c1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,9 +1,18 @@ #[macro_use] extern crate rocket; use rocket_dyn_templates::{context, Template}; +use blockchain_time::{BlockchainInfo, BlockchainSupported}; #[get("/")] fn index() -> Template { - let context = context! {}; + let blockchain_infos: Vec<(String, BlockchainInfo)> = vec!{ + ("BSV".to_string(), BlockchainSupported::BSV.into()), + ("BTC".to_string(), BlockchainSupported::BTC.into()), + ("XMR".to_string(), BlockchainSupported::XMR.into()), + ("ETH".to_string(), BlockchainSupported::ETH.into()), + }; + let context = context! { + blockchain_infos + }; Template::render("index", context) } diff --git a/templates/index.html.tera b/templates/index.html.tera index a70a4a8..265c673 100644 --- a/templates/index.html.tera +++ b/templates/index.html.tera @@ -3,6 +3,15 @@ Big Tim +

Welcome to Blockchain Time

A.K.A. Big Tim

@@ -17,11 +26,28 @@

Convert from Blockchain Time

Booo

+

why are you going this way??? Don't you know your blocktimes??

...
- ... +

Current Block Heights and Times

+
+ {% for bi in blockchain_infos %} +
+

{{ bi[0] }}

+

Blockheight: {{ bi[1].latest_block_height }}

+

Time Seen: {{ bi[1].latest_block_time }} +

+ {% endfor %} +
-{#__tera_context#} +
+ +
+

Pressing the above button might take some time... or it might crash the appliaction... + or it'll do what you want... you won't know till you press it.

+ + +{{ __tera_context }}