///|
pub struct GuardManifest {
name : String
version : String
providers : Array[String]
routes : Int
checks : Array[String]
} derive(Eq, Debug)
///|
pub fn GuardManifest::new(
name : String,
version : String,
providers : Array[String],
routes : Int,
checks : Array[String],
) -> GuardManifest {
{ name, version, providers, routes, checks }
}
///|
pub fn default_manifest(config : GuardConfig) -> GuardManifest {
let catalog = capabilities_catalog()
let providers = Array::makei(catalog.length(), i => catalog[i].profile.name)
GuardManifest::new(
package_name(),
version(),
providers,
config.router.enabled_count(),
["signature", "timestamp", "event_id", "replay", "idempotency", "routing"],
)
}
///|
pub fn manifest_markdown(manifest : GuardManifest) -> String {
let builder = StringBuilder::new()
builder.write_string("# ")
builder.write_string(manifest.name)
builder.write_string("\n\nversion: ")
builder.write_string(manifest.version)
builder.write_string("\n\nproviders: ")
for i in 0.. 0 {
builder.write_string(", ")
}
builder.write_string(manifest.providers[i])
}
builder.write_string("\n\nroutes: ")
builder.write_string(manifest.routes.to_string())
builder.write_string("\n\nchecks: ")
for i in 0.. 0 {
builder.write_string(", ")
}
builder.write_string(manifest.checks[i])
}
builder.write_string("\n")
builder.to_string()
}
///|
pub fn manifest_json_like(manifest : GuardManifest) -> String {
let builder = StringBuilder::new()
builder.write_string("{\"name\":\"")
builder.write_string(manifest.name)
builder.write_string("\",\"version\":\"")
builder.write_string(manifest.version)
builder.write_string("\",\"routes\":")
builder.write_string(manifest.routes.to_string())
builder.write_string(",\"checks\":[")
for i in 0.. 0 {
builder.write_string(",")
}
builder.write_string("\"")
builder.write_string(manifest.checks[i])
builder.write_string("\"")
}
builder.write_string("]}")
builder.to_string()
}