pub struct RequestContext {
pub request_id: String,
pub user_id: Option<String>,
pub session_id: Option<String>,
pub client_id: Option<String>,
pub timestamp: Timestamp,
pub start_time: Instant,
pub metadata: Arc<HashMap<String, Value>>,
pub cancellation_token: Option<Arc<CancellationToken>>,
/* private fields */
}
Expand description
Context information for request processing
Fields§
§request_id: String
Unique request identifier
user_id: Option<String>
User identifier (if authenticated)
session_id: Option<String>
Session identifier
client_id: Option<String>
Client identifier
timestamp: Timestamp
Request timestamp
start_time: Instant
Request start time for performance tracking
metadata: Arc<HashMap<String, Value>>
Custom metadata
cancellation_token: Option<Arc<CancellationToken>>
Cancellation token
Implementations§
Source§impl RequestContext
impl RequestContext
Sourcepub fn new() -> Self
pub fn new() -> Self
Create a new request context
§Examples
use turbomcp_core::RequestContext;
let ctx = RequestContext::new();
assert!(!ctx.request_id.is_empty());
assert!(ctx.user_id.is_none());
assert!(ctx.session_id.is_none());
assert!(ctx.metadata.is_empty());
Sourcepub fn is_authenticated(&self) -> bool
pub fn is_authenticated(&self) -> bool
Return true if the request is authenticated according to context metadata
§Examples
use turbomcp_core::RequestContext;
let ctx = RequestContext::new()
.with_metadata("authenticated", true);
assert!(ctx.is_authenticated());
let unauth_ctx = RequestContext::new();
assert!(!unauth_ctx.is_authenticated());
Sourcepub fn has_any_role<S: AsRef<str>>(&self, required: &[S]) -> bool
pub fn has_any_role<S: AsRef<str>>(&self, required: &[S]) -> bool
Return true if the user has any of the required roles
Sourcepub fn with_user_id(self, user_id: impl Into<String>) -> Self
pub fn with_user_id(self, user_id: impl Into<String>) -> Self
Set the user ID
Sourcepub fn with_session_id(self, session_id: impl Into<String>) -> Self
pub fn with_session_id(self, session_id: impl Into<String>) -> Self
Set the session ID
Sourcepub fn with_client_id(self, client_id: impl Into<String>) -> Self
pub fn with_client_id(self, client_id: impl Into<String>) -> Self
Set the client ID
Sourcepub fn with_metadata(
self,
key: impl Into<String>,
value: impl Into<Value>,
) -> Self
pub fn with_metadata( self, key: impl Into<String>, value: impl Into<Value>, ) -> Self
Add metadata
Sourcepub fn with_cancellation_token(self, token: Arc<CancellationToken>) -> Self
pub fn with_cancellation_token(self, token: Arc<CancellationToken>) -> Self
Set cancellation token
Sourcepub fn is_cancelled(&self) -> bool
pub fn is_cancelled(&self) -> bool
Check if request is cancelled
Sourcepub fn get_metadata(&self, key: &str) -> Option<&Value>
pub fn get_metadata(&self, key: &str) -> Option<&Value>
Get metadata value
Sourcepub fn with_elicitation_context(self, context: ElicitationContext) -> Self
pub fn with_elicitation_context(self, context: ElicitationContext) -> Self
Add elicitation context for server-initiated user input
Sourcepub fn elicitation_context(&self) -> Option<ElicitationContext>
pub fn elicitation_context(&self) -> Option<ElicitationContext>
Get elicitation context if present
Sourcepub fn with_completion_context(self, context: CompletionContext) -> Self
pub fn with_completion_context(self, context: CompletionContext) -> Self
Add completion context for autocompletion requests
Sourcepub fn completion_context(&self) -> Option<CompletionContext>
pub fn completion_context(&self) -> Option<CompletionContext>
Get completion context if present
Sourcepub fn with_resource_template_context(
self,
context: ResourceTemplateContext,
) -> Self
pub fn with_resource_template_context( self, context: ResourceTemplateContext, ) -> Self
Add resource template context for parameterized resources
Sourcepub fn resource_template_context(&self) -> Option<ResourceTemplateContext>
pub fn resource_template_context(&self) -> Option<ResourceTemplateContext>
Get resource template context if present
Sourcepub fn with_ping_context(self, context: PingContext) -> Self
pub fn with_ping_context(self, context: PingContext) -> Self
Add ping context for health monitoring
Sourcepub fn ping_context(&self) -> Option<PingContext>
pub fn ping_context(&self) -> Option<PingContext>
Get ping context if present
Sourcepub fn with_bidirectional_context(self, context: BidirectionalContext) -> Self
pub fn with_bidirectional_context(self, context: BidirectionalContext) -> Self
Add bidirectional communication context
Sourcepub fn bidirectional_context(&self) -> Option<BidirectionalContext>
pub fn bidirectional_context(&self) -> Option<BidirectionalContext>
Get bidirectional context if present
Sourcepub fn is_server_initiated(&self) -> bool
pub fn is_server_initiated(&self) -> bool
Check if this is a server-initiated request
Sourcepub fn is_client_initiated(&self) -> bool
pub fn is_client_initiated(&self) -> bool
Check if this is a client-initiated request (default/traditional)
Sourcepub fn communication_direction(&self) -> CommunicationDirection
pub fn communication_direction(&self) -> CommunicationDirection
Get communication direction
Sourcepub fn for_elicitation(schema: Value, prompt: Option<String>) -> Self
pub fn for_elicitation(schema: Value, prompt: Option<String>) -> Self
Create context for server-initiated elicitation request
Sourcepub fn for_completion(completion_ref: CompletionReference) -> Self
pub fn for_completion(completion_ref: CompletionReference) -> Self
Create context for completion request
Sourcepub fn for_resource_template(
template_name: String,
uri_template: String,
) -> Self
pub fn for_resource_template( template_name: String, uri_template: String, ) -> Self
Create context for resource template operation
Sourcepub fn for_ping(origin: PingOrigin) -> Self
pub fn for_ping(origin: PingOrigin) -> Self
Create context for ping request
Trait Implementations§
Source§impl Clone for RequestContext
impl Clone for RequestContext
Source§fn clone(&self) -> RequestContext
fn clone(&self) -> RequestContext
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for RequestContext
impl Debug for RequestContext
Source§impl Default for RequestContext
impl Default for RequestContext
Source§impl RequestContextExt for RequestContext
impl RequestContextExt for RequestContext
Source§fn with_enhanced_client_id(self, client_id: ClientId) -> Self
fn with_enhanced_client_id(self, client_id: ClientId) -> Self
ClientId
enum