From 2e893dca1dc8365dd2a244dda3f92f52c884a660 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Tue, 13 Jun 2023 22:47:40 +0300 Subject: refactor(ops/yandex-cloud-rs): allow TokenProvider impls to fail It's actually quite common that a token provider might fail, for example when fetching a token from instance metadata. Change-Id: Ie0126fb92c6c613ad36b5583fd68505fdd97f2c1 Reviewed-on: https://cl.tvl.fyi/c/depot/+/8764 Tested-by: BuildkiteCI Reviewed-by: tazjin --- ops/yandex-cloud-rs/src/lib.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ops/yandex-cloud-rs/src/lib.rs b/ops/yandex-cloud-rs/src/lib.rs index 5e92f05417..87a9164e07 100644 --- a/ops/yandex-cloud-rs/src/lib.rs +++ b/ops/yandex-cloud-rs/src/lib.rs @@ -52,18 +52,18 @@ pub mod tonic_exports { /// tokens for Yandex Cloud. pub trait TokenProvider { /// Fetch a currently valid authentication token for Yandex Cloud. - fn get_token<'a>(&'a mut self) -> &'a str; + fn get_token<'a>(&'a mut self) -> Result<&'a str, tonic::Status>; } impl TokenProvider for String { - fn get_token<'a>(&'a mut self) -> &'a str { - self.as_str() + fn get_token<'a>(&'a mut self) -> Result<&'a str, tonic::Status> { + Ok(self.as_str()) } } impl TokenProvider for &'static str { - fn get_token(&mut self) -> &'static str { - *self + fn get_token(&mut self) -> Result<&'static str, tonic::Status> { + Ok(*self) } } @@ -89,7 +89,7 @@ impl Interceptor for AuthInterceptor { &mut self, mut request: tonic::Request<()>, ) -> Result, tonic::Status> { - let token: MetadataValue = format!("Bearer {}", self.token_provider.get_token()) + let token: MetadataValue = format!("Bearer {}", self.token_provider.get_token()?) .try_into() .map_err(|_| { tonic::Status::invalid_argument("authorization token contained invalid characters") -- cgit 1.4.1