diff --git a/atrium-oauth/identity/src/did/common_resolver.rs b/atrium-oauth/identity/src/did/common_resolver.rs index 5d0934b2..601127f7 100644 --- a/atrium-oauth/identity/src/did/common_resolver.rs +++ b/atrium-oauth/identity/src/did/common_resolver.rs @@ -1,5 +1,6 @@ use atrium_api::did_doc::DidDocument; use atrium_api::types::string::Did; +use atrium_xrpc::HttpClient; use super::plc_resolver::{PlcDidResolver, PlcDidResolverConfig}; use super::web_resolver::{WebDidResolver, WebDidResolverConfig}; @@ -50,9 +51,4 @@ where } } -impl DidResolver for CommonDidResolver -where - PlcDidResolver: DidResolver + Send + Sync + 'static, - WebDidResolver: DidResolver + Send + Sync + 'static, -{ -} +impl DidResolver for CommonDidResolver where T: HttpClient + Send + Sync + 'static {} diff --git a/atrium-oauth/oauth-client/src/resolver.rs b/atrium-oauth/oauth-client/src/resolver.rs index 3c195166..ad36e813 100644 --- a/atrium-oauth/oauth-client/src/resolver.rs +++ b/atrium-oauth/oauth-client/src/resolver.rs @@ -7,7 +7,9 @@ use crate::types::{OAuthAuthorizationServerMetadata, OAuthProtectedResourceMetad use atrium_identity::identity_resolver::{ IdentityResolver, IdentityResolverConfig, ResolvedIdentity, }; -use atrium_identity::resolver::{CachedResolver, CachedResolverConfig}; +use atrium_identity::resolver::{ + Cacheable, CachedResolver, CachedResolverConfig, Throttleable, ThrottledResolver, +}; use atrium_identity::{did::DidResolver, handle::HandleResolver, Resolver}; use atrium_identity::{Error, Result}; use atrium_xrpc::HttpClient; @@ -59,15 +61,15 @@ pub struct OAuthResolver< T, D, H, - PRR = DefaultOAuthProtectedResourceResolver, - ASR = DefaultOAuthAuthorizationServerResolver, + PR = DefaultOAuthProtectedResourceResolver, + AS = DefaultOAuthAuthorizationServerResolver, > where - PRR: Resolver, - ASR: Resolver, + PR: Resolver + Send + Sync + 'static, + AS: Resolver + Send + Sync + 'static, { identity_resolver: IdentityResolver, - protected_resource_resolver: CachedResolver, - authorization_server_resolver: CachedResolver, + protected_resource_resolver: CachedResolver>, + authorization_server_resolver: CachedResolver>, _phantom: PhantomData, } @@ -76,14 +78,14 @@ where T: HttpClient + Send + Sync + 'static, { pub fn new(config: OAuthResolverConfig, http_client: Arc) -> Self { - let protected_resource_resolver = CachedResolver::new( - DefaultOAuthProtectedResourceResolver::new(http_client.clone()), - config.authorization_server_metadata.cache, - ); - let authorization_server_resolver = CachedResolver::new( - DefaultOAuthAuthorizationServerResolver::new(http_client.clone()), - config.protected_resource_metadata.cache, - ); + let protected_resource_resolver = + DefaultOAuthProtectedResourceResolver::new(http_client.clone()) + .throttled() + .cached(config.authorization_server_metadata.cache); + let authorization_server_resolver = + DefaultOAuthAuthorizationServerResolver::new(http_client.clone()) + .throttled() + .cached(config.protected_resource_metadata.cache); Self { identity_resolver: IdentityResolver::new(IdentityResolverConfig { did_resolver: config.did_resolver,