1use dscode_extension_host::{
6 ExtensionPermissions, PathValidator, Permission, RateLimiter, SecretStorage,
7};
8
9fn main() -> Result<(), Box<dyn std::error::Error>> {
10 let mut validator = PathValidator::new();
12 validator.add_workspace_folder(std::env::current_dir()?);
13 let safe = validator.validate_path("file:///workspace/src/main.rs")?;
14 println!("Validated path: {}", safe.display());
15
16 let perms = ExtensionPermissions::from_manifest(
18 "my-extension".to_string(),
19 Some(vec!["fileSystem.read".to_string()]),
20 )?;
21 perms.check_permission(&Permission::FileSystemRead)?;
22 println!("Permission check passed.");
23
24 let limiter = RateLimiter::new();
26 limiter.check_rate_limit("my-extension")?;
27 println!("Rate limit check passed.");
28
29 let secrets = SecretStorage::new();
31 secrets.set("my-extension", "api_key", "secret-value")?;
32 let value = secrets.get("my-extension", "api_key")?;
33 println!("Retrieved secret: {}", value.unwrap_or_default());
34
35 Ok(())
36}