@@ -9,27 +9,26 @@ use std::sync::Arc;
99/// reach this interface.
1010pub trait AuthProvider : Send + Sync {
1111 fn add_auth_headers ( & self , headers : & mut HeaderMap ) ;
12-
13- fn auth_header_attached ( & self ) -> bool {
14- false
15- }
16-
17- fn auth_header_name ( & self ) -> Option < & ' static str > {
18- None
19- }
2012}
2113
22- impl < T : AuthProvider + ?Sized > AuthProvider for Arc < T > {
23- fn add_auth_headers ( & self , headers : & mut HeaderMap ) {
24- self . as_ref ( ) . add_auth_headers ( headers) ;
25- }
14+ /// Shared auth handle passed through API clients.
15+ pub type SharedAuthProvider = Arc < dyn AuthProvider > ;
2616
27- fn auth_header_attached ( & self ) -> bool {
28- self . as_ref ( ) . auth_header_attached ( )
29- }
17+ #[ derive( Clone , Copy , Debug , Default , PartialEq , Eq ) ]
18+ pub struct AuthHeaderTelemetry {
19+ pub attached : bool ,
20+ pub name : Option < & ' static str > ,
21+ }
3022
31- fn auth_header_name ( & self ) -> Option < & ' static str > {
32- self . as_ref ( ) . auth_header_name ( )
23+ pub fn auth_header_telemetry ( auth : & dyn AuthProvider ) -> AuthHeaderTelemetry {
24+ let mut headers = HeaderMap :: new ( ) ;
25+ auth. add_auth_headers ( & mut headers) ;
26+ let name = headers
27+ . contains_key ( http:: header:: AUTHORIZATION )
28+ . then_some ( "authorization" ) ;
29+ AuthHeaderTelemetry {
30+ attached : name. is_some ( ) ,
31+ name,
3332 }
3433}
3534
0 commit comments