///|
pub struct IntegrationGuide {
manifest : String
endpoints : String
cookbook : String
quality : String
scenarios : String
} derive(Eq, Debug)
///|
pub fn IntegrationGuide::new(
manifest : String,
endpoints : String,
cookbook : String,
quality : String,
scenarios : String,
) -> IntegrationGuide {
{ manifest, endpoints, cookbook, quality, scenarios }
}
///|
pub fn build_integration_guide(config : GuardConfig) -> IntegrationGuide {
IntegrationGuide::new(
manifest_markdown(default_manifest(config)),
endpoint_catalog_markdown(config.router),
combined_cookbook(),
quality_text(validate_config(config)),
scenario_report(run_scenarios(scenario_suite(), config)),
)
}
///|
pub fn integration_guide_markdown(guide : IntegrationGuide) -> String {
let builder = StringBuilder::new()
builder.write_string("# moon_webhook_guard Integration Guide\n\n")
builder.write_string("## Manifest\n\n")
builder.write_string(guide.manifest)
builder.write_string("\n## Endpoints\n\n")
builder.write_string(guide.endpoints)
builder.write_string("\n## Cookbooks\n\n")
builder.write_string(guide.cookbook)
builder.write_string("\n## Quality\n\n```text\n")
builder.write_string(guide.quality)
builder.write_string("```\n\n## Scenarios\n\n")
builder.write_string(guide.scenarios)
builder.to_string()
}
///|
pub fn default_integration_guide() -> String {
integration_guide_markdown(build_integration_guide(GuardConfig::default()))
}
///|
pub fn integration_summary(config : GuardConfig) -> String {
let guide = build_integration_guide(config)
"manifest=\{guide.manifest.length()} endpoints=\{guide.endpoints.length()} scenarios=\{guide.scenarios.length()}"
}