Files
ghostv2/api/src/validate.rs
2026-01-20 19:49:12 -08:00

34 lines
937 B
Rust

use actix_web::web;
use crate::AppState;
use crate::error::{Error, Result};
use crate::user::RepositoryDefinition;
pub async fn validate_repo(
app_state: web::Data<AppState>,
repo: &RepositoryDefinition,
user_id: &str,
) -> Result<()> {
let token = app_state.user.get_access_token(&user_id).await?;
let response = app_state
.reqwest_client
.get(format!(
"https://raw.githubusercontent.com/{}/HEAD/dist/index.html",
repo.full_name
))
.bearer_auth(token)
.send()
.await?;
match response.status() {
reqwest::StatusCode::OK => Ok(()),
reqwest::StatusCode::NOT_FOUND => Err(Error::ValidationFailed(
"dist/index.html not found in repository".to_string(),
)),
status => Err(Error::ValidationFailed(format!(
"failed to validate repository: HTTP {}",
status
))),
}
}