turbomcp_server/handlers/traits/
resource.rs1use async_trait::async_trait;
4use serde_json::Value;
5use std::collections::HashMap;
6use turbomcp_protocol::RequestContext;
7use turbomcp_protocol::types::{ReadResourceRequest, ReadResourceResult, Resource};
8
9use crate::ServerResult;
10
11#[async_trait]
13pub trait ResourceHandler: Send + Sync {
14 async fn handle(
16 &self,
17 request: ReadResourceRequest,
18 ctx: RequestContext,
19 ) -> ServerResult<ReadResourceResult>;
20
21 fn resource_definition(&self) -> Resource;
23
24 async fn exists(&self, uri: &str) -> bool;
26
27 async fn metadata(&self, _uri: &str) -> Option<HashMap<String, Value>> {
29 None
30 }
31}