diff options
author | Vincent Ambo <mail@tazj.in> | 2023-06-13T19·47+0300 |
---|---|---|
committer | tazjin <tazjin@tvl.su> | 2023-06-14T10·06+0000 |
commit | 2e893dca1dc8365dd2a244dda3f92f52c884a660 (patch) | |
tree | 2aa4663e6b4b7b726fa9c5e8c6b34d5072658224 /ops/yandex-cloud-rs/src/lib.rs | |
parent | ed388f019aa84eca634dbfbd1cfed2e153780aa7 (diff) |
refactor(ops/yandex-cloud-rs): allow TokenProvider impls to fail r/6289
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 <tazjin@tvl.su>
Diffstat (limited to 'ops/yandex-cloud-rs/src/lib.rs')
-rw-r--r-- | ops/yandex-cloud-rs/src/lib.rs | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/ops/yandex-cloud-rs/src/lib.rs b/ops/yandex-cloud-rs/src/lib.rs index 5e92f05417cd..87a9164e0755 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<T: TokenProvider> Interceptor for AuthInterceptor<T> { &mut self, mut request: tonic::Request<()>, ) -> Result<tonic::Request<()>, tonic::Status> { - let token: MetadataValue<Ascii> = format!("Bearer {}", self.token_provider.get_token()) + let token: MetadataValue<Ascii> = format!("Bearer {}", self.token_provider.get_token()?) .try_into() .map_err(|_| { tonic::Status::invalid_argument("authorization token contained invalid characters") |