dahua-camera-server 0.3.1

axum HTTP, SSE and WebSocket API for the dahua-camera stack
Documentation
//! Read-only camera status endpoints.

use crate::dto::CameraView;
use crate::AppState;
use axum::extract::{Path, State};
use axum::http::StatusCode;
use axum::Json;

/// `GET /api/cameras` — every camera, in stable id order.
pub async fn list_cameras(State(state): State<AppState>) -> Json<Vec<CameraView>> {
    Json(state.all().map(|c| CameraView::of(c)).collect())
}

/// `GET /api/cameras/{id}` — one camera.
pub async fn get_camera(
    State(state): State<AppState>,
    Path(id): Path<String>,
) -> Result<Json<CameraView>, StatusCode> {
    let camera = state.get(&id).ok_or(StatusCode::NOT_FOUND)?;
    Ok(Json(CameraView::of(&camera)))
}