use crate::utils::Json;
const MAINNET: &str = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/fixtures/ws/mainnet.json"));
const TESTNET: &str = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/fixtures/ws/testnet.json"));
const HIP4_TUI: &str = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/fixtures/ws/hip4-tui.json"));
const DOCS: &str = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/fixtures/ws/docs.json"));
fn frames(manifest: &str) -> Vec<(String, String)> {
let manifest = Json::parse(manifest).unwrap();
manifest
.get("frames")
.and_then(Json::as_object)
.unwrap()
.iter()
.map(|(name, text)| (name.clone(), text.as_str().unwrap().to_owned()))
.collect()
}
fn named(manifest: &str, name: &str) -> String {
frames(manifest)
.into_iter()
.find(|(each, _)| each == name)
.map(|(_, text)| text)
.unwrap_or_else(|| panic!("no frame named {name}"))
}
pub fn mainnet(name: &str) -> String {
named(MAINNET, name)
}
pub fn testnet(name: &str) -> String {
named(TESTNET, name)
}
pub fn hip4_tui(name: &str) -> String {
named(HIP4_TUI, name)
}
pub fn docs(name: &str) -> String {
named(DOCS, name)
}
pub fn all() -> Vec<(String, String)> {
[MAINNET, TESTNET, HIP4_TUI, DOCS].into_iter().flat_map(frames).collect()
}