Added current block info and skeleton of website

This commit is contained in:
2024-07-14 19:08:38 +01:00
parent 0fbd04e791
commit cc7678ec18
5 changed files with 147 additions and 18 deletions

112
Cargo.lock generated
View File

@@ -60,7 +60,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn", "syn 2.0.70",
] ]
[[package]] [[package]]
@@ -71,7 +71,7 @@ checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn", "syn 2.0.70",
] ]
[[package]] [[package]]
@@ -151,7 +151,9 @@ dependencies = [
"lazy_static", "lazy_static",
"rocket", "rocket",
"rocket_dyn_templates", "rocket_dyn_templates",
"serde",
"serde_json", "serde_json",
"serde_with",
"ureq", "ureq",
] ]
@@ -205,6 +207,7 @@ dependencies = [
"iana-time-zone", "iana-time-zone",
"js-sys", "js-sys",
"num-traits", "num-traits",
"serde",
"wasm-bindgen", "wasm-bindgen",
"windows-targets 0.52.6", "windows-targets 0.52.6",
] ]
@@ -310,6 +313,41 @@ dependencies = [
"typenum", "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]] [[package]]
name = "deranged" name = "deranged"
version = "0.3.11" version = "0.3.11"
@@ -355,7 +393,7 @@ dependencies = [
"proc-macro2", "proc-macro2",
"proc-macro2-diagnostics", "proc-macro2-diagnostics",
"quote", "quote",
"syn", "syn 2.0.70",
] ]
[[package]] [[package]]
@@ -732,6 +770,12 @@ dependencies = [
"cc", "cc",
] ]
[[package]]
name = "ident_case"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
[[package]] [[package]]
name = "idna" name = "idna"
version = "0.5.0" version = "0.5.0"
@@ -1093,7 +1137,7 @@ dependencies = [
"proc-macro2", "proc-macro2",
"proc-macro2-diagnostics", "proc-macro2-diagnostics",
"quote", "quote",
"syn", "syn 2.0.70",
] ]
[[package]] [[package]]
@@ -1133,7 +1177,7 @@ dependencies = [
"pest_meta", "pest_meta",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn", "syn 2.0.70",
] ]
[[package]] [[package]]
@@ -1226,7 +1270,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn", "syn 2.0.70",
"version_check", "version_check",
"yansi", "yansi",
] ]
@@ -1305,7 +1349,7 @@ checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn", "syn 2.0.70",
] ]
[[package]] [[package]]
@@ -1416,7 +1460,7 @@ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"rocket_http", "rocket_http",
"syn", "syn 2.0.70",
"unicode-xid", "unicode-xid",
"version_check", "version_check",
] ]
@@ -1562,7 +1606,7 @@ checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn", "syn 2.0.70",
] ]
[[package]] [[package]]
@@ -1585,6 +1629,29 @@ dependencies = [
"serde", "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]] [[package]]
name = "sha2" name = "sha2"
version = "0.10.8" version = "0.10.8"
@@ -1679,12 +1746,29 @@ dependencies = [
"loom", "loom",
] ]
[[package]]
name = "strsim"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
[[package]] [[package]]
name = "subtle" name = "subtle"
version = "2.6.1" version = "2.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" 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]] [[package]]
name = "syn" name = "syn"
version = "2.0.70" version = "2.0.70"
@@ -1747,7 +1831,7 @@ checksum = "d20468752b09f49e909e55a5d338caa8bedf615594e9d80bc4c565d30faf798c"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn", "syn 2.0.70",
] ]
[[package]] [[package]]
@@ -1832,7 +1916,7 @@ checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn", "syn 2.0.70",
] ]
[[package]] [[package]]
@@ -1918,7 +2002,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn", "syn 2.0.70",
] ]
[[package]] [[package]]
@@ -2167,7 +2251,7 @@ dependencies = [
"once_cell", "once_cell",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn", "syn 2.0.70",
"wasm-bindgen-shared", "wasm-bindgen-shared",
] ]
@@ -2189,7 +2273,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn", "syn 2.0.70",
"wasm-bindgen-backend", "wasm-bindgen-backend",
"wasm-bindgen-shared", "wasm-bindgen-shared",
] ]

View File

@@ -11,7 +11,13 @@ lazy_static = "1.5.0"
rocket = "0.5.1" rocket = "0.5.1"
serde_json = "1.0.120" serde_json = "1.0.120"
ureq = { version = "2.10.0", features = ["json"] } ureq = { version = "2.10.0", features = ["json"] }
serde = { version = "1.0", features = ["derive"] }
[dependencies.rocket_dyn_templates] [dependencies.rocket_dyn_templates]
version = "0.2.0" version = "0.2.0"
features = ["tera"] features = ["tera"]
[dependencies.serde_with]
version = "1.9.1"
features = [ "chrono" ]

View File

@@ -1,7 +1,9 @@
use chrono::prelude::*; use chrono::prelude::*;
use lazy_static::lazy_static; use lazy_static::lazy_static;
use rocket::serde::Serialize;
use std::convert::Into; use std::convert::Into;
use std::sync::RwLock; use std::sync::RwLock;
use serde_with::{serde_as, DisplayFromStr};
pub enum BlockchainSupported { pub enum BlockchainSupported {
BTC, BTC,
@@ -12,10 +14,12 @@ pub enum BlockchainSupported {
type BlockHeight = i64; type BlockHeight = i64;
#[derive(Clone, Copy, PartialEq, Debug)] #[serde_as]
#[derive(Clone, Copy, PartialEq, Debug, Serialize)]
pub struct BlockchainInfo { pub struct BlockchainInfo {
block_period: u64, // In seconds block_period: u64, // In seconds
latest_block_height: BlockHeight, latest_block_height: BlockHeight,
#[serde_as(as = "DisplayFromStr")]
latest_block_time: DateTime<Utc>, latest_block_time: DateTime<Utc>,
} }

View File

@@ -1,9 +1,18 @@
#[macro_use] extern crate rocket; #[macro_use] extern crate rocket;
use rocket_dyn_templates::{context, Template}; use rocket_dyn_templates::{context, Template};
use blockchain_time::{BlockchainInfo, BlockchainSupported};
#[get("/")] #[get("/")]
fn index() -> Template { 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) Template::render("index", context)
} }

View File

@@ -3,6 +3,15 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>Big Tim</title> <title>Big Tim</title>
<style>
.blockchain_infos {
display: flex;
flex-wrap: wrap;
}
.blockchain_info {
margin: 20px;
}
</style>
</head> </head>
<body> <body>
<h1>Welcome to Blockchain Time</h1><p>A.K.A. Big Tim</p> <h1>Welcome to Blockchain Time</h1><p>A.K.A. Big Tim</p>
@@ -17,11 +26,28 @@
<div> <div>
<h2>Convert from Blockchain Time</h2> <h2>Convert from Blockchain Time</h2>
<h3>Booo</h3> <h3>Booo</h3>
<p>why are you going this way??? Don't you know your blocktimes??</p>
... ...
</div> </div>
<div class="cur_blocks"> <div class="cur_blocks">
... <h2>Current Block Heights and Times</h2>
<div class="blockchain_infos">
{% for bi in blockchain_infos %}
<div class="blockchain_info">
<h3>{{ bi[0] }}</h3>
<p>Blockheight: {{ bi[1].latest_block_height }}</p>
<p>Time Seen: {{ bi[1].latest_block_time }}
</div> </div>
{#__tera_context#} {% endfor %}
</div>
<form action="update_blockchains">
<input type="submit" value="Update Blockchain Information" />
</form>
<p>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.</p>
{{ __tera_context }}
</body> </body>
</html> </html>