feat: expand device API with stub implementation
This commit is contained in:
parent
25c16cf03a
commit
baad9d46cc
2 changed files with 109 additions and 2 deletions
|
|
@ -1,6 +1,9 @@
|
||||||
use axum::Json;
|
use axum::{extract::Path, Json};
|
||||||
|
use serde::Deserialize;
|
||||||
use serde_json::{json, Value};
|
use serde_json::{json, Value};
|
||||||
|
|
||||||
|
use crate::error::AppError;
|
||||||
|
|
||||||
/// GET /devices
|
/// GET /devices
|
||||||
///
|
///
|
||||||
/// Returns an empty list of devices.
|
/// Returns an empty list of devices.
|
||||||
|
|
@ -16,3 +19,86 @@ pub async fn get_devices() -> Json<Value> {
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// GET /devices/knowndevice
|
||||||
|
///
|
||||||
|
/// Checks if a device is known to the server.
|
||||||
|
/// Always returns false since we don't track devices.
|
||||||
|
/// This is used by clients to determine if a device has been previously used.
|
||||||
|
/// X-Request-Email and X-Device-Identifier headers are expected but we ignore them.
|
||||||
|
#[worker::send]
|
||||||
|
pub async fn get_known_device() -> Json<bool> {
|
||||||
|
// Always return false - we don't track devices
|
||||||
|
Json(false)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// GET /devices/identifier/{device_id}
|
||||||
|
///
|
||||||
|
/// Returns information about a specific device.
|
||||||
|
/// Since we don't track devices, we return a 404-like error.
|
||||||
|
/// However, to avoid client errors, we return an empty device stub.
|
||||||
|
#[worker::send]
|
||||||
|
pub async fn get_device(Path(device_id): Path<String>) -> Result<Json<Value>, AppError> {
|
||||||
|
// Return a minimal device stub to prevent client errors
|
||||||
|
// The client may request device info after login
|
||||||
|
Ok(Json(json!({
|
||||||
|
"id": device_id,
|
||||||
|
"name": "Unknown Device",
|
||||||
|
"type": 0,
|
||||||
|
"identifier": device_id,
|
||||||
|
"creationDate": "2000-01-01T00:00:00.000Z",
|
||||||
|
"object": "device"
|
||||||
|
})))
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Deserialize)]
|
||||||
|
#[serde(rename_all = "camelCase")]
|
||||||
|
pub struct PushToken {
|
||||||
|
#[allow(dead_code)]
|
||||||
|
push_token: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// POST /devices/identifier/{device_id}/token
|
||||||
|
///
|
||||||
|
/// Registers a push token for a device.
|
||||||
|
/// We accept but ignore this since push notifications are not implemented.
|
||||||
|
#[worker::send]
|
||||||
|
pub async fn post_device_token(
|
||||||
|
Path(_device_id): Path<String>,
|
||||||
|
Json(_data): Json<PushToken>,
|
||||||
|
) -> Json<Value> {
|
||||||
|
// Accept but ignore - push notifications not implemented
|
||||||
|
Json(json!({}))
|
||||||
|
}
|
||||||
|
|
||||||
|
/// PUT /devices/identifier/{device_id}/token
|
||||||
|
///
|
||||||
|
/// Updates a push token for a device.
|
||||||
|
/// We accept but ignore this since push notifications are not implemented.
|
||||||
|
#[worker::send]
|
||||||
|
pub async fn put_device_token(
|
||||||
|
Path(_device_id): Path<String>,
|
||||||
|
Json(_data): Json<PushToken>,
|
||||||
|
) -> Json<Value> {
|
||||||
|
// Accept but ignore - push notifications not implemented
|
||||||
|
Json(json!({}))
|
||||||
|
}
|
||||||
|
|
||||||
|
/// PUT /devices/identifier/{device_id}/clear-token
|
||||||
|
///
|
||||||
|
/// Clears the push token for a device.
|
||||||
|
/// We accept but ignore this since push notifications are not implemented.
|
||||||
|
#[worker::send]
|
||||||
|
pub async fn put_clear_device_token(Path(_device_id): Path<String>) -> Json<Value> {
|
||||||
|
// Accept but ignore - push notifications not implemented
|
||||||
|
Json(json!({}))
|
||||||
|
}
|
||||||
|
|
||||||
|
/// POST /devices/identifier/{device_id}/clear-token
|
||||||
|
///
|
||||||
|
/// Clears the push token for a device.
|
||||||
|
/// We accept but ignore this since push notifications are not implemented.
|
||||||
|
#[worker::send]
|
||||||
|
pub async fn post_clear_device_token(Path(_device_id): Path<String>) -> Json<Value> {
|
||||||
|
// Accept but ignore - push notifications not implemented
|
||||||
|
Json(json!({}))
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -78,8 +78,29 @@ pub fn api_router(env: Env) -> Router {
|
||||||
"/api/emergency-access/granted",
|
"/api/emergency-access/granted",
|
||||||
get(emergency_access::get_granted_access),
|
get(emergency_access::get_granted_access),
|
||||||
)
|
)
|
||||||
// Devices (stub - returns empty list, device tracking not implemented)
|
// Devices (stub - device tracking not implemented, JWT-based auth)
|
||||||
.route("/api/devices", get(devices::get_devices))
|
.route("/api/devices", get(devices::get_devices))
|
||||||
|
.route("/api/devices/knowndevice", get(devices::get_known_device))
|
||||||
|
.route(
|
||||||
|
"/api/devices/identifier/{device_id}",
|
||||||
|
get(devices::get_device),
|
||||||
|
)
|
||||||
|
.route(
|
||||||
|
"/api/devices/identifier/{device_id}/token",
|
||||||
|
post(devices::post_device_token),
|
||||||
|
)
|
||||||
|
.route(
|
||||||
|
"/api/devices/identifier/{device_id}/token",
|
||||||
|
put(devices::put_device_token),
|
||||||
|
)
|
||||||
|
.route(
|
||||||
|
"/api/devices/identifier/{device_id}/clear-token",
|
||||||
|
put(devices::put_clear_device_token),
|
||||||
|
)
|
||||||
|
.route(
|
||||||
|
"/api/devices/identifier/{device_id}/clear-token",
|
||||||
|
post(devices::post_clear_device_token),
|
||||||
|
)
|
||||||
// WebAuthn (stub - prevents 404 errors, passkeys not supported)
|
// WebAuthn (stub - prevents 404 errors, passkeys not supported)
|
||||||
.route(
|
.route(
|
||||||
"/api/webauthn",
|
"/api/webauthn",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue