Govern wire schemas from TypeSpec

This commit is contained in:
ms2k 2026-07-19 02:00:47 +09:00
commit 2020dd4ed3

View file

@ -205,6 +205,7 @@ async fn submit_job(
http: HttpRequest,
request: web::Json<JobSubmissionDto>,
) -> Result<HttpResponse, PublicApiError> {
validate_request("JobSubmission", &*request)?;
let principal = state.principal(&http).await?;
let key = idempotency_key(&http)?;
let request = request.into_inner();
@ -694,6 +695,7 @@ async fn create_source_credential(
http: HttpRequest,
request: web::Json<SourceCredentialCreateDto>,
) -> Result<HttpResponse, PublicApiError> {
validate_request("SourceCredentialCreate", &*request)?;
let principal = state.principal(&http).await?;
let key = idempotency_key(&http)?;
let request = request.into_inner();
@ -828,6 +830,7 @@ async fn rotate_source_credential(
path: web::Path<String>,
request: web::Json<SourceCredentialRotateDto>,
) -> Result<HttpResponse, PublicApiError> {
validate_request("SourceCredentialRotate", &*request)?;
let principal = state.principal(&http).await?;
let credential_id = parse_id(path.into_inner())?;
let key = idempotency_key(&http)?;
@ -2038,6 +2041,12 @@ fn request_id() -> OpaqueId {
OpaqueId::parse(value).expect("random request id is valid")
}
fn validate_request(schema: &'static str, request: &impl Serialize) -> Result<(), PublicApiError> {
remora_contracts::request_is_valid(schema, request)
.then_some(())
.ok_or_else(PublicApiError::invalid_request)
}
#[cfg(test)]
mod tests {
use remora_domain::StorageScope;