···
-
pub struct AuthSetupError(#[from] atrium_oauth::Error);
···
http_client: http_client.clone(),
let client_config = OAuthClientConfig {
client_metadata: AtprotoLocalhostClientMetadata {
redirect_uris: Some(vec![String::from("http://127.0.0.1:9997/authorized")]),
···
resolver: OAuthResolverConfig {
did_resolver: did_resolver(),
handle_resolver: AtprotoHandleResolver::new(AtprotoHandleResolverConfig {
-
dns_txt_resolver: HickoryDnsTxtResolver::default(),
http_client: Arc::clone(&http_client),
authorization_server_metadata: Default::default(),
···
session_store: MemorySessionStore::default(),
-
let client = OAuthClient::new(client_config)?;
client: Arc::new(client),
···
-
pub struct HickoryDnsTxtResolver {
-
resolver: TokioResolver,
-
impl Default for HickoryDnsTxtResolver {
-
resolver: TokioResolver::builder_tokio()
-
.expect("failed to create resolver")
···
) -> core::result::Result<Vec<String>, Box<dyn std::error::Error + Send + Sync>> {
···
+
pub enum AuthSetupError {
+
#[error("failed to intiialize atrium client: {0}")]
+
AtriumClientError(atrium_oauth::Error),
+
#[error("failed to initialize hickory dns resolver: {0}")]
+
HickoryResolverError(hickory_resolver::ResolveError),
···
http_client: http_client.clone(),
+
HickoryDnsTxtResolver::new().map_err(AuthSetupError::HickoryResolverError)?;
let client_config = OAuthClientConfig {
client_metadata: AtprotoLocalhostClientMetadata {
redirect_uris: Some(vec![String::from("http://127.0.0.1:9997/authorized")]),
···
resolver: OAuthResolverConfig {
did_resolver: did_resolver(),
handle_resolver: AtprotoHandleResolver::new(AtprotoHandleResolverConfig {
http_client: Arc::clone(&http_client),
authorization_server_metadata: Default::default(),
···
session_store: MemorySessionStore::default(),
+
let client = OAuthClient::new(client_config).map_err(AuthSetupError::AtriumClientError)?;
client: Arc::new(client),
···
+
pub struct HickoryDnsTxtResolver(TokioResolver);
+
impl HickoryDnsTxtResolver {
+
fn new() -> Result<Self, hickory_resolver::ResolveError> {
+
let resolver = TokioResolver::builder_tokio()?.build();
···
) -> core::result::Result<Vec<String>, Box<dyn std::error::Error + Send + Sync>> {