A library for ATProtocol identities.

refactor: OAuth token response may have optional refresh token.

Changed files
+12 -7
crates
atproto-oauth
atproto-oauth-aip
atproto-oauth-axum
+1 -2
crates/atproto-oauth-aip/src/lib.rs
··· 80 //! let session = session_exchange( 81 //! &http_client, 82 //! &protected_resource.resource, 83 - //! &token_response.access_token, 84 - //! &None 85 //! ).await?; 86 //! # Ok(()) 87 //! # }
··· 80 //! let session = session_exchange( 81 //! &http_client, 82 //! &protected_resource.resource, 83 + //! &token_response.access_token 84 //! ).await?; 85 //! # Ok(()) 86 //! # }
+1 -2
crates/atproto-oauth-aip/src/workflow.rs
··· 99 //! let session = session_exchange( 100 //! &http_client, 101 //! &protected_resource.resource, 102 - //! &token_response.access_token, 103 - //! &None 104 //! ).await?; 105 //! # Ok(()) 106 //! # }
··· 99 //! let session = session_exchange( 100 //! &http_client, 101 //! &protected_resource.resource, 102 + //! &token_response.access_token 103 //! ).await?; 104 //! # Ok(()) 105 //! # }
+4 -1
crates/atproto-oauth-axum/src/bin/atproto-oauth-tool.rs
··· 545 println!("\nOAuth Token Refresh Response:"); 546 println!("Access Token: {}", token_response.access_token); 547 println!("Token Type: {}", token_response.token_type); 548 - println!("Refresh Token: {}", &token_response.refresh_token); 549 println!("Scope: {}", token_response.scope); 550 println!("Expires In: {} seconds", token_response.expires_in); 551 println!(
··· 545 println!("\nOAuth Token Refresh Response:"); 546 println!("Access Token: {}", token_response.access_token); 547 println!("Token Type: {}", token_response.token_type); 548 + println!( 549 + "Refresh Token: {}", 550 + token_response.refresh_token.as_deref().unwrap_or("N/A") 551 + ); 552 println!("Scope: {}", token_response.scope); 553 println!("Expires In: {} seconds", token_response.expires_in); 554 println!(
+4 -1
crates/atproto-oauth-axum/src/handle_complete.rs
··· 133 document.id, 134 oauth_request.issuer, 135 token_response.access_token, 136 - token_response.refresh_token, 137 token_response.token_type, 138 token_response.expires_in, 139 token_response.scope,
··· 133 document.id, 134 oauth_request.issuer, 135 token_response.access_token, 136 + token_response 137 + .refresh_token 138 + .clone() 139 + .unwrap_or_else(|| "N/A".to_string()), 140 token_response.token_type, 141 token_response.expires_in, 142 token_response.scope,
+2 -1
crates/atproto-oauth/src/workflow.rs
··· 210 pub token_type: String, 211 212 /// The refresh token that can be used to obtain new access tokens. 213 - pub refresh_token: String, 214 215 /// The scope of access granted by the access token. 216 #[cfg_attr(feature = "zeroize", zeroize(skip))]
··· 210 pub token_type: String, 211 212 /// The refresh token that can be used to obtain new access tokens. 213 + /// Not all token responses include a refresh token. 214 + pub refresh_token: Option<String>, 215 216 /// The scope of access granted by the access token. 217 #[cfg_attr(feature = "zeroize", zeroize(skip))]