Can get a single device enrollment status

This commit is contained in:
2024-07-03 22:05:19 +02:00
parent e97ef6fe45
commit 8674d25512
7 changed files with 91 additions and 8 deletions

View File

@ -71,3 +71,34 @@ pub async fn enroll(req: web::Json<EnrollRequest>, actor: WebEnergyActor) -> Htt
Ok(HttpResponse::Accepted().json("Device successfully enrolled"))
}
#[derive(serde::Deserialize)]
pub struct EnrollmentStatusQuery {
id: DeviceId,
}
#[derive(serde::Serialize)]
#[serde(tag = "status")]
enum EnrollmentDeviceStatus {
Unknown,
Pending,
Validated,
}
/// Check device enrollment status
pub async fn enrollment_status(
query: web::Query<EnrollmentStatusQuery>,
actor: WebEnergyActor,
) -> HttpResult {
let dev = actor
.send(energy_actor::GetSingleDevice(query.id.clone()))
.await?;
let status = match dev {
None => EnrollmentDeviceStatus::Unknown,
Some(d) if d.validated => EnrollmentDeviceStatus::Validated,
_ => EnrollmentDeviceStatus::Pending,
};
Ok(HttpResponse::Ok().json(status))
}