๐Ÿ€ ATproto library for gleam
atproto library gleam
34

Configure Feed

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

possum: `resolve_handle` now takes a `handle.Handle` as parameter instead of a string

kacaii.dev (Jul 11, 2026, 11:36 AM -0300) 734fb0bb a49905d8

+9 -5
+1
CHANGELOG.md
··· 18 18 - Renamed `did.DidError` to `did.ParseError` 19 19 - Rename `did.InvalidFormat` to `did.InvalidSyntax` 20 20 - Rename `handle.InvalidFormat` to `handle.InvalidSyntax` 21 + - `resolve_handle` now takes a `handle.Handle` as parameter instead of a string
+3 -2
src/possum.gleam
··· 36 36 import gleam/json 37 37 import gleam/option 38 38 import possum/did 39 + import possum/handle 39 40 40 41 /// Documentation: [/xrpc/com.atproto.repo](https://endpoints.bsky.app/#bluesky-app/tag/comatprotorepo) 41 42 const com_atproto_repo = "xrpc/com.atproto.repo" ··· 163 164 /// Endpoint Docs: [/xrpc/com.atproto.identity.resolveHandle](https://endpoints.bsky.app/#bluesky-app/tag/comatprotoidentity/GET/xrpc/com.atproto.identity.resolveHandle) 164 165 pub fn resolve_handle( 165 166 request: request.Request(_), 166 - handle handle: String, 167 + handle: handle.Handle, 167 168 ) -> request.Request(_) { 168 169 request 169 170 |> request.prepend_header("accept", "application/json") 170 171 |> request.set_method(http.Get) 171 172 |> request.set_path(com_atproto_identity <> ".resolveHandle") 172 - |> request.set_query([#("handle", handle)]) 173 + |> request.set_query([#("handle", handle.to_string(handle))]) 173 174 } 174 175 175 176 /// Create an authentication session.
+5 -3
test/possum_test.gleam
··· 12 12 import global_value 13 13 import possum 14 14 import possum/did 15 + import possum/handle 15 16 16 17 pub fn main() -> Nil { 17 18 gleeunit.main() ··· 22 23 const plc_directory = "plc.directory" 23 24 24 25 pub type Context { 25 - Context(handle: String, did: did.Did, pds: String) 26 + Context(handle: handle.Handle, did: did.Did, pds: String) 26 27 } 27 28 28 29 fn decode_record() -> decode.Decoder( ··· 34 35 fn global_data() -> Context { 35 36 global_value.create_with_unique_name("possum_test.global.data", fn() { 36 37 use <- result.lazy_unwrap({ 37 - use handle <- result.try(envoy.get("POSSUM_TEST_HANDLE")) 38 + use handle_string <- result.try(envoy.get("POSSUM_TEST_HANDLE")) 38 39 use pds <- result.try(envoy.get("POSSUM_TEST_PDS")) 39 40 use did_string <- result.try(envoy.get("POSSUM_TEST_DID")) 40 41 use did <- result.map(did.parse(did_string) |> result.replace_error(Nil)) 42 + let assert Ok(handle) = handle.parse(handle_string) 41 43 42 44 Context(handle:, did:, pds:) 43 45 }) 44 46 45 - let handle = "bsky.app" 47 + let assert Ok(handle) = handle.parse("bsky.app") 46 48 let assert Ok(did_response) = 47 49 request.new() 48 50 |> request.set_host(slingshot)