///|
pub fn recipe_allow_all(agent : String) -> String {
render(allow_all(agent))
}
///|
pub fn recipe_block_all(agent : String) -> String {
render(block_all(agent))
}
///|
pub fn recipe_private_public(
private_prefix : String,
public_prefix : String,
) -> String {
render(allow_public_private(private_prefix, public_prefix))
}
///|
pub fn recipe_blog(sitemap : String) -> String {
render(
append_sitemap(block_paths("*", ["/admin", "/drafts", "/private"]), sitemap),
)
}
///|
pub fn recipe_static_site(sitemap : String) -> String {
let group = group_add_allow(
group_add_disallow(group_for_agents(["*"]), "/assets/private"),
"/assets/public",
)
render(append_sitemap(robots_from_group(group), sitemap))
}
///|
pub fn recipe_api_docs(sitemap : String) -> String {
let group = group_add_allow(
group_add_disallow(group_for_agents(["*"]), "/api/internal"),
"/api/docs",
)
render(append_sitemap(robots_from_group(group), sitemap))
}
///|
pub fn recipe_for_kind(kind : String, sitemap : String) -> String {
let name = lower_ascii(kind)
if name == "blog" {
recipe_blog(sitemap)
} else if name == "static" {
recipe_static_site(sitemap)
} else if name == "api" {
recipe_api_docs(sitemap)
} else {
recipe_allow_all("*")
}
}
///|
pub fn recipe_names() -> Array[String] {
["allow-all", "block-all", "blog", "static", "api"]
}
///|
pub fn recipe_catalog() -> String {
join_lines([
"allow-all: no path rules", "block-all: Disallow /", "blog: blocks admin drafts private",
"static: protects private assets", "api: protects internal API while exposing docs",
])
}