let index_thread = thread::spawn(move || loop {
if SHUTTING_DOWN.load(atomic::Ordering::Relaxed) {
break;
}
if let Err(error) = index_clone.update() {
log::warn!("Updating index: {error}");
}
thread::sleep(Duration::from_millis(5000));
});
INDEXER.lock().unwrap().replace(index_thread);
let server_config = Arc::new(ServerConfig {
is_json_api_enabled: self.enable_json_api,
});
let config = options.load_config()?;
let acme_domains = self.acme_domains()?;
let page_config = Arc::new(PageConfig {
chain: options.chain(),
csp_origin: self.csp_origin.clone(),
domain: acme_domains.first().cloned(),
index_sats: index.has_sat_index(),
});
let router = Router::new()
.route("/", get(Self::home))
.route("/block/:query", get(Self::block))
.route("/blockcount", get(Self::block_count))
.route("/blockhash", get(Self::block_hash))
.route("/blockhash/:height", get(Self::block_hash_from_height))