vtx_sdk/
vtx_permissions.rs

1//! Permission constants and helpers.
2
3use crate::vtx_error::VtxError;
4use crate::Capabilities;
5
6pub const PERM_BUFFER_CREATE: &str = "buffer:create";
7pub const PERM_FILE_READ: &str = "file:read";
8pub const PERM_FILE_WRITE: &str = "file:write";
9pub const PERM_FFMPEG_EXECUTE: &str = "ffmpeg:execute";
10pub const PERM_SQL_WRITE: &str = "sql:write";
11
12pub trait CapabilitiesExt {
13    fn has_permission(&self, perm: &str) -> bool;
14}
15
16impl CapabilitiesExt for Capabilities {
17    fn has_permission(&self, perm: &str) -> bool {
18        self.permissions.iter().any(|p| p == perm)
19    }
20}
21
22pub trait VtxErrorExt {
23    fn is_permission_denied(&self) -> bool;
24}
25
26impl VtxErrorExt for VtxError {
27    fn is_permission_denied(&self) -> bool {
28        matches!(self, VtxError::PermissionDenied(_))
29    }
30}