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>>,
}
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
Trait Implementations§
Source§impl Clone for RequestContext
impl Clone for RequestContext
Source§fn clone(&self) -> RequestContext
fn clone(&self) -> RequestContext
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
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
Set client ID using
ClientId
enumSource§fn extract_client_id(
self,
extractor: &ClientIdExtractor,
headers: Option<&HashMap<String, String>>,
query_params: Option<&HashMap<String, String>>,
) -> Self
fn extract_client_id( self, extractor: &ClientIdExtractor, headers: Option<&HashMap<String, String>>, query_params: Option<&HashMap<String, String>>, ) -> Self
Extract and set client ID from headers and query params
Source§fn get_enhanced_client_id(&self) -> Option<ClientId>
fn get_enhanced_client_id(&self) -> Option<ClientId>
Get the enhanced client ID
Auto Trait Implementations§
impl Freeze for RequestContext
impl RefUnwindSafe for RequestContext
impl Send for RequestContext
impl Sync for RequestContext
impl Unpin for RequestContext
impl UnwindSafe for RequestContext
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more