Skip to main content

sim_table_http/
capabilities.rs

1//! Capability helpers for the HTTP table backend.
2
3use sim_kernel::{CapabilityName, Cx, Error, Result};
4
5/// The capability gating direct HTTP table operations (`net/http`).
6pub fn table_http_capability() -> CapabilityName {
7    CapabilityName::new("net/http")
8}
9
10/// Require direct HTTP authority, accepting compatibility aliases.
11pub fn require_table_http(cx: &Cx) -> Result<()> {
12    let canonical = table_http_capability();
13    if cx.capabilities().contains(&canonical)
14        || net_http_aliases()
15            .iter()
16            .any(|alias| cx.capabilities().contains(&CapabilityName::new(*alias)))
17    {
18        Ok(())
19    } else {
20        Err(Error::CapabilityDenied {
21            capability: canonical,
22        })
23    }
24}
25
26fn net_http_aliases() -> &'static [&'static str] {
27    &["net.http", "net-connect", "network"]
28}