use rust_embed::RustEmbed;
use serde_json::Value;
#[derive(RustEmbed)]
#[folder = "src/schema/json/"]
struct SchemaAssets;
pub enum JsonSchemaAccessorError {
FileError,
JsonError,
NetworkError,
}
pub fn access_json_schema_file(
schema: &str,
schema_version: &str,
) -> Result<Value, JsonSchemaAccessorError> {
let safe_version = schema_version.replace('.', "_");
let filename = format!("{}_v{}.json", schema, safe_version);
let file_bytes = SchemaAssets::get(&filename).ok_or(JsonSchemaAccessorError::FileError)?;
let file_content = std::str::from_utf8(file_bytes.data.as_ref())
.map_err(|_| JsonSchemaAccessorError::FileError)?;
let json_value: Value =
serde_json::from_str(file_content).map_err(|_| JsonSchemaAccessorError::JsonError)?;
Ok(json_value)
}