gitdataai/libs/api/robots.rs

38 lines
923 B
Rust

use actix_web::{HttpResponse, web};
use service::AppService;
/// Serves robots.txt, blocking all sensitive paths from crawlers.
pub async fn robots(service: web::Data<AppService>) -> HttpResponse {
let raw = service
.config
.main_domain()
.unwrap_or_else(|_| "https://gitdata.ai".to_string());
let sitemap_base = if raw.starts_with("https://") {
raw.trim_end_matches('/').to_string()
} else if raw.starts_with("http://") {
raw.replacen("http://", "https://", 1)
} else {
format!("https://{raw}")
};
let body = format!(
r#"User-agent: *
Disallow: /api/
Disallow: /health
Disallow: /metrics
Disallow: /ws/
Disallow: /avatar/
Disallow: /blob/
Disallow: /media/
Disallow: /static/
Disallow: /assets/
Sitemap: {sitemap_base}/sitemap.xml
"#,
);
HttpResponse::Ok()
.content_type("text/plain; charset=utf-8")
.body(body)
}