diff --git a/src/possum/tangled.gleam b/src/possum/tangled.gleam index 14aedf5..1a0005f 100644 --- a/src/possum/tangled.gleam +++ b/src/possum/tangled.gleam @@ -1,4 +1,7 @@ import gleam/http/request +import gleam/int +import gleam/option +import gleam/order import gleam/string import possum/did @@ -30,24 +33,44 @@ pub fn nsid_to_string(nsid: Nsid) -> String { /// import possum/did /// import possum/tangled /// -/// // DID of the user that created the ticket +/// // DID of the user that created the record /// let assert Ok(did) = did.parse("did:plc:xu5apv6kmu5jp7g5hwdnej42") /// /// request.new() -/// |> tangled.list_comments(did, tangled.PullRequest, "3mp2gobkoy722") +/// |> tangled.list_comments( +/// did, +/// tangled.PullRequest, +/// "3mp2gobkoy722", +/// option.None, +/// option.None, +/// ) /// ``` pub fn list_comments( request: request.Request(_), did: did.Did, nsid: Nsid, rkey: String, + cursor: option.Option(String), + limit: option.Option(Int), ) -> request.Request(_) { let subject = string.join([did.to_string(did), nsid_to_string(nsid), rkey], "/") + let query = [#("subject", "at://" <> subject)] + + let query = case cursor { + option.Some(value) -> [#("cursor", value), ..query] + option.None -> query + } + + let query = case limit { + option.Some(value) -> [#("limit", int.to_string(value)), ..query] + option.None -> query + } + request |> request.set_host(api) |> request.set_header("accept", "application/json") |> request.set_path("/xrpc/sh.tangled.feed.listComments") - |> request.set_query([#("subject", "at://" <> subject)]) + |> request.set_query(query) }