diff --git a/CHANGELOG.md b/CHANGELOG.md index e9183f6..52e1360 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,3 +18,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Renamed `did.DidError` to `did.ParseError` - Rename `did.InvalidFormat` to `did.InvalidSyntax` - Rename `handle.InvalidFormat` to `handle.InvalidSyntax` +- `resolve_handle` now takes a `handle.Handle` as parameter instead of a string diff --git a/src/possum.gleam b/src/possum.gleam index 68b7eae..b44127d 100644 --- a/src/possum.gleam +++ b/src/possum.gleam @@ -36,6 +36,7 @@ import gleam/int import gleam/json import gleam/option import possum/did +import possum/handle /// Documentation: [/xrpc/com.atproto.repo](https://endpoints.bsky.app/#bluesky-app/tag/comatprotorepo) const com_atproto_repo = "xrpc/com.atproto.repo" @@ -163,13 +164,13 @@ pub fn resolve_well_known_did( /// Endpoint Docs: [/xrpc/com.atproto.identity.resolveHandle](https://endpoints.bsky.app/#bluesky-app/tag/comatprotoidentity/GET/xrpc/com.atproto.identity.resolveHandle) pub fn resolve_handle( request: request.Request(_), - handle handle: String, + handle: handle.Handle, ) -> request.Request(_) { request |> request.prepend_header("accept", "application/json") |> request.set_method(http.Get) |> request.set_path(com_atproto_identity <> ".resolveHandle") - |> request.set_query([#("handle", handle)]) + |> request.set_query([#("handle", handle.to_string(handle))]) } /// Create an authentication session. diff --git a/test/possum_test.gleam b/test/possum_test.gleam index 3608950..4f8497a 100644 --- a/test/possum_test.gleam +++ b/test/possum_test.gleam @@ -12,6 +12,7 @@ import gleeunit import global_value import possum import possum/did +import possum/handle pub fn main() -> Nil { gleeunit.main() @@ -22,7 +23,7 @@ const slingshot = "slingshot.microcosm.blue" const plc_directory = "plc.directory" pub type Context { - Context(handle: String, did: did.Did, pds: String) + Context(handle: handle.Handle, did: did.Did, pds: String) } fn decode_record() -> decode.Decoder( @@ -34,15 +35,16 @@ fn decode_record() -> decode.Decoder( fn global_data() -> Context { global_value.create_with_unique_name("possum_test.global.data", fn() { use <- result.lazy_unwrap({ - use handle <- result.try(envoy.get("POSSUM_TEST_HANDLE")) + use handle_string <- result.try(envoy.get("POSSUM_TEST_HANDLE")) use pds <- result.try(envoy.get("POSSUM_TEST_PDS")) use did_string <- result.try(envoy.get("POSSUM_TEST_DID")) use did <- result.map(did.parse(did_string) |> result.replace_error(Nil)) + let assert Ok(handle) = handle.parse(handle_string) Context(handle:, did:, pds:) }) - let handle = "bsky.app" + let assert Ok(handle) = handle.parse("bsky.app") let assert Ok(did_response) = request.new() |> request.set_host(slingshot)