pub struct WecomBackend { /* private fields */ }Expand description
统一出网后端:所有请求都经它转发,负责
- 持有 token 即注入
Authorization: Bearer <token>(无论端点是否挂RequireAuth;无 token 则忽略不注入);挂RequireAuth的端点在 前置门禁 校验:无可用 token 直接报AuthError::MissingCredentials, 请求不发出。携带SuppressAuth的端点(换取 token 的引导接口)即使有 token 也不注入; - 捕获 853004(token 失效)→ 经
TokenProvider重新换取 token (存储持久化 + 内存缓存)→ 重放原请求一次(未注入 token 的请求不参与刷新)。
扁平响应等请求/响应封装由 wecomx-transport 的 endpoint envelope 驱动, 本层不做特殊分流。
所有载荷均可重放:经 HttpRequestPayload
工厂克隆(Arc 零成本),重放 = 再次 build。
Implementations§
Source§impl WecomBackend
impl WecomBackend
Sourcepub fn new(
inner: Arc<dyn TransportBackend>,
provider: Option<Arc<dyn TokenProvider>>,
token: Option<String>,
) -> Self
pub fn new( inner: Arc<dyn TransportBackend>, provider: Option<Arc<dyn TokenProvider>>, token: Option<String>, ) -> Self
Wrap an inner backend with authentication.
provider 为认证来源(None 表示无凭据:不注入、不刷新);
token 为初始缓存的 token(如来自凭据存储 / 环境变量)。
Sourcepub fn with_bin_name(self, bin_name: impl Into<String>) -> Self
pub fn with_bin_name(self, bin_name: impl Into<String>) -> Self
设置错误提示中的命令名(影响门禁 / 刷新失败的引导文案)。
Sourcepub fn cached_token(&self) -> Option<String>
pub fn cached_token(&self) -> Option<String>
当前缓存的 token(构建时注入或刷新后更新)。
Trait Implementations§
Source§impl Clone for WecomBackend
impl Clone for WecomBackend
Source§fn clone(&self) -> WecomBackend
fn clone(&self) -> WecomBackend
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · 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 WecomBackend
impl Debug for WecomBackend
Source§impl TransportBackend for WecomBackend
impl TransportBackend for WecomBackend
Source§fn execute<'a>(
&'a self,
endpoint: Cow<'a, Endpoint>,
payload: HttpRequestPayload,
options: RequestOptions,
) -> Pin<Box<dyn Future<Output = Result<TransportResponse, Error>> + Send + 'a>>
fn execute<'a>( &'a self, endpoint: Cow<'a, Endpoint>, payload: HttpRequestPayload, options: RequestOptions, ) -> Pin<Box<dyn Future<Output = Result<TransportResponse, Error>> + Send + 'a>>
Execute a request and return a unified
TransportResponse. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for WecomBackend
impl !UnwindSafe for WecomBackend
impl Freeze for WecomBackend
impl Send for WecomBackend
impl Sync for WecomBackend
impl Unpin for WecomBackend
impl UnsafeUnpin for WecomBackend
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