atproto_client
Alpha. Pre-1.0 and evolving alongside at-record; expect breaking changes between 0.x releases.
A small, transport-agnostic atproto client for Gleam.
No app or lexicon knowledge: XRPC, identity resolution, OAuth discovery, blobs,
and generic repo CRUD. Modules live under the atproto/ namespace.
Transport injection
The client carries a send function instead of a hardcoded HTTP backend, so it
compiles on both erlang and javascript and you choose the backend:
import atproto/xrpc
import gleam/httpc
import gleam/result
import gleam/string
let client =
xrpc.Client(send: fn(req) {
httpc.send(req) |> result.map_error(string.inspect)
})
Modules
| Module | What it does |
|---|---|
atproto/xrpc | Client, XrpcError, get/post_json, parse. |
atproto/identity | resolve_pds (handle/DID -> PDS) via Slingshot resolveMiniDoc. |
atproto/auth | create_session (com.atproto.server.createSession). |
atproto/repo | list_records/create_record/delete_record, generic over a row decoder. |
atproto/uri | at-uri helpers (rkey). |
Development
gleam test