37 releases (20 breaking)
0.21.0 | Apr 18, 2024 |
---|---|
0.20.0 | Mar 27, 2024 |
0.15.0 | Dec 23, 2023 |
0.14.0 | Nov 23, 2023 |
0.4.0 | Jun 30, 2023 |
#269 in Network programming
876 downloads per month
Used in 2 crates
500KB
12K
SLoC
ATrium API: Rust library for Bluesky's atproto services
ATrium API is a Rust library that includes the definitions of XRPC requests and their associated input/output model types. These codes are generated from the Lexicon schema on atproto.com.
Usage
Any HTTP client that implements atrium_xrpc::HttpClient
can be used to handle XRPC requests. Since atrium_xrpc_client
provides several implementations, it is recommended to use one of them that fits your project requirements.
use atrium_api::client::AtpServiceClient;
use atrium_api::com::atproto::server::create_session::Input;
use atrium_xrpc_client::reqwest::ReqwestClient;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = AtpServiceClient::new(ReqwestClient::new("https://bsky.social"));
let result = client
.service
.com
.atproto
.server
.create_session(Input {
identifier: "alice@mail.com".into(),
password: "hunter2".into(),
})
.await;
println!("{:?}", result);
Ok(())
}
AtpAgent
While AtpServiceClient
can be used for simple XRPC calls, it is better to use AtpAgent
, which has practical features such as session management.
use atrium_api::agent::{store::MemorySessionStore, AtpAgent};
use atrium_xrpc_client::reqwest::ReqwestClient;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let agent = AtpAgent::new(
ReqwestClient::new("https://bsky.social"),
MemorySessionStore::default(),
);
agent.login("alice@mail.com", "hunter2").await?;
let result = agent
.api
.app
.bsky
.actor
.get_profile(atrium_api::app::bsky::actor::get_profile::Parameters {
actor: "bsky.app".parse()?,
})
.await?;
println!("{:?}", result);
Ok(())
}
Dependencies
~6.5–10MB
~177K SLoC