A library for ATProtocol identities.
22
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix: added missing crate fields

Signed-off-by: Nick Gerakines <nick.gerakines@gmail.com>

+80 -4
+2
CLAUDE.prompts.md
··· 24 25 Write high level module documentation in the `path/to/file.rs` source file. Documentation should brief and specific. Think very hard about how to do this. 26 27 Update the high level module documentation in each of the source files in the `atproto-identity`, `atproto-record`, `atproto-oauth`, `atproto-client`, and `atproto-oauth-axum` crates. Documentation should brief and specific. Think very hard about how to do this. 28 29 Update the `README.md` files in the `atproto-identity`, `atproto-record`, `atproto-oauth`, `atproto-oauth-axum`, and `atproto-client` crates. Each `README.md` file should include a high level overview of what the crate provides and include a summary of each binary produced by the crate. Think very hard.
··· 24 25 Write high level module documentation in the `path/to/file.rs` source file. Documentation should brief and specific. Think very hard about how to do this. 26 27 + Write high level crate documentation in the `crates/atproto-oauth-axum/src/lib.rs` source file. Documentation should brief and specific. Think very hard about how to do this. 28 + 29 Update the high level module documentation in each of the source files in the `atproto-identity`, `atproto-record`, `atproto-oauth`, `atproto-client`, and `atproto-oauth-axum` crates. Documentation should brief and specific. Think very hard about how to do this. 30 31 Update the `README.md` files in the `atproto-identity`, `atproto-record`, `atproto-oauth`, `atproto-oauth-axum`, and `atproto-client` crates. Each `README.md` file should include a high level overview of what the crate provides and include a summary of each binary produced by the crate. Think very hard.
+3
crates/atproto-client/Cargo.toml
··· 1 [package] 2 name = "atproto-client" 3 version = "0.4.0" 4 readme = "README.md" 5 6 edition.workspace = true 7 rust-version.workspace = true
··· 1 [package] 2 name = "atproto-client" 3 version = "0.4.0" 4 + description = "HTTP client for AT Protocol services with OAuth and identity integration" 5 readme = "README.md" 6 + homepage = "https://tangled.sh/@smokesignal.events/atproto-identity-rs" 7 + documentation = "https://docs.rs/atproto-client" 8 9 edition.workspace = true 10 rust-version.workspace = true
+3 -1
crates/atproto-identity/Cargo.toml
··· 1 [package] 2 name = "atproto-identity" 3 version = "0.4.0" 4 - description = "An ATProtocol identity library" 5 readme = "README.md" 6 7 edition.workspace = true 8 rust-version.workspace = true
··· 1 [package] 2 name = "atproto-identity" 3 version = "0.4.0" 4 + description = "AT Protocol identity management - DID resolution, handle resolution, and cryptographic operations" 5 readme = "README.md" 6 + homepage = "https://tangled.sh/@smokesignal.events/atproto-identity-rs" 7 + documentation = "https://docs.rs/atproto-identity" 8 9 edition.workspace = true 10 rust-version.workspace = true
+3
crates/atproto-oauth-axum/Cargo.toml
··· 1 [package] 2 name = "atproto-oauth-axum" 3 version = "0.4.0" 4 readme = "README.md" 5 6 edition.workspace = true 7 rust-version.workspace = true
··· 1 [package] 2 name = "atproto-oauth-axum" 3 version = "0.4.0" 4 + description = "Axum web framework integration for AT Protocol OAuth workflows" 5 readme = "README.md" 6 + homepage = "https://tangled.sh/@smokesignal.events/atproto-identity-rs" 7 + documentation = "https://docs.rs/atproto-oauth-axum" 8 9 edition.workspace = true 10 rust-version.workspace = true
+61 -3
crates/atproto-oauth-axum/src/lib.rs
··· 1 - //! AT Protocol OAuth Axum web handlers. 2 //! 3 - //! Complete Axum web handlers for implementing AT Protocol OAuth 2.0 authorization server 4 - //! endpoints including client metadata, JWKS, and authorization callback handling. 5 6 #![warn(missing_docs)] 7
··· 1 + //! Axum web framework integration for AT Protocol OAuth workflows. 2 //! 3 + //! This crate provides complete Axum web handlers and request extractors for implementing 4 + //! AT Protocol OAuth 2.0 client endpoints. It includes RFC-compliant client metadata serving, 5 + //! JWKS public key distribution, and OAuth authorization callback handling. 6 + //! 7 + //! ## Features 8 + //! 9 + //! - **OAuth Client Metadata**: RFC 7591 compliant client metadata endpoint 10 + //! - **JWKS Endpoint**: JSON Web Key Set serving for signature verification 11 + //! - **Authorization Callbacks**: Complete OAuth authorization code flow handling 12 + //! - **DPoP Support**: Demonstration of Proof-of-Possession token binding 13 + //! - **Request Extractors**: Axum state management for OAuth configuration 14 + //! - **Error Handling**: Structured error types for OAuth workflows 15 + //! 16 + //! ## OAuth Endpoints 17 + //! 18 + //! The crate provides handlers for standard OAuth 2.0 endpoints: 19 + //! 20 + //! - `/oauth/client-metadata.json` - OAuth client metadata (RFC 7591) 21 + //! - `/.well-known/jwks.json` - JSON Web Key Set for public keys 22 + //! - `/oauth/callback` - OAuth authorization callback handler 23 + //! 24 + //! ## CLI Tool 25 + //! 26 + //! The `atproto-oauth-tool` binary provides a complete OAuth client implementation: 27 + //! 28 + //! ```bash 29 + //! # Start OAuth login flow 30 + //! atproto-oauth-tool login <private_signing_key> <subject> 31 + //! 32 + //! # Refresh OAuth tokens 33 + //! atproto-oauth-tool refresh <private_signing_key> <subject> <private_dpop_key> <refresh_token> 34 + //! ``` 35 + //! 36 + //! ## Example Integration 37 + //! 38 + //! ```rust,no_run 39 + //! use axum::{routing::get, Router}; 40 + //! use atproto_oauth_axum::{ 41 + //! handle_complete::handle_oauth_callback, 42 + //! handle_jwks::handle_oauth_jwks, 43 + //! handler_metadata::handle_oauth_metadata, 44 + //! state::OAuthClientConfig, 45 + //! }; 46 + //! 47 + //! # async fn example() -> Result<(), Box<dyn std::error::Error>> { 48 + //! let router = Router::new() 49 + //! .route("/oauth/client-metadata.json", get(handle_oauth_metadata)) 50 + //! .route("/.well-known/jwks.json", get(handle_oauth_jwks)) 51 + //! .route("/oauth/callback", get(handle_oauth_callback)); 52 + //! // .with_state(oauth_config); 53 + //! # Ok(()) 54 + //! # } 55 + //! ``` 56 + //! 57 + //! ## Dependencies 58 + //! 59 + //! This crate integrates with: 60 + //! - [`atproto-oauth`]: Core OAuth workflow logic and PKCE implementation 61 + //! - [`atproto-identity`]: AT Protocol identity resolution and key management 62 + //! - [`axum`]: Web framework for HTTP request handling 63 64 #![warn(missing_docs)] 65
+5
crates/atproto-oauth/Cargo.toml
··· 1 [package] 2 name = "atproto-oauth" 3 version = "0.4.0" 4 edition.workspace = true 5 rust-version.workspace = true 6 repository.workspace = true
··· 1 [package] 2 name = "atproto-oauth" 3 version = "0.4.0" 4 + description = "OAuth workflow implementation for AT Protocol - PKCE, DPoP, and secure authentication flows" 5 + readme = "README.md" 6 + homepage = "https://tangled.sh/@smokesignal.events/atproto-identity-rs" 7 + documentation = "https://docs.rs/atproto-oauth" 8 + 9 edition.workspace = true 10 rust-version.workspace = true 11 repository.workspace = true
+3
crates/atproto-record/Cargo.toml
··· 2 name = "atproto-record" 3 version = "0.4.0" 4 description = "AT Protocol record signature operations - cryptographic signing and verification for AT Protocol records" 5 6 edition.workspace = true 7 rust-version.workspace = true
··· 2 name = "atproto-record" 3 version = "0.4.0" 4 description = "AT Protocol record signature operations - cryptographic signing and verification for AT Protocol records" 5 + readme = "README.md" 6 + homepage = "https://tangled.sh/@smokesignal.events/atproto-identity-rs" 7 + documentation = "https://docs.rs/atproto-record" 8 9 edition.workspace = true 10 rust-version.workspace = true