๐Ÿ€ ATproto XRPC client for gleam possum.hexdocs.pm
gleam atproto xrpc-client library
40

Configure Feed

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

readme: update readme

kacaii.dev (Jun 28, 2026, 11:29 PM -0300) 9894f3fa 4b730f1c

+61 -58
+8 -5
README.md
··· 17 17 import gleam/http/request 18 18 import possum 19 19 20 - /// This builds a request to: 21 - /// https://bsky.social/xrpc/com.atproto.identity.resolveHandle?handle=kacaii.dev 22 - pub fn build_request() -> request.Request(_) { 20 + pub fn build_request() -> request.Request(String) { 23 21 request.new() 24 - |> request.set_host("bsky.social") // or eurosky.social 25 - |> possum.resolve_handle("kacaii.dev") // use your handle 22 + |> request.set_host("bsky.social") 23 + |> possum.create_session( 24 + "kacaii.dev", 25 + "bsky-app-password", 26 + option.None, 27 + option.None 28 + ) 26 29 } 27 30 ```
+16 -16
src/possum.gleam
··· 65 65 pub fn create_session( 66 66 request: request.Request(_), 67 67 handle: String, 68 - app_password: String, 69 - allow_takendown: option.Option(Bool), 70 - auth_factor_token: option.Option(String), 68 + app_password app_password: String, 69 + allow_takendown allow_takendown: option.Option(Bool), 70 + auth_factor_token auth_factor_token: option.Option(String), 71 71 ) -> request.Request(_) { 72 72 let values = [ 73 73 #("identifier", json.string(handle)), ··· 113 113 /// 114 114 /// Documentation: [/xrpc/com.atproto.repo.describeRepo](https://endpoints.bsky.app/#bluesky-app/tag/comatprotorepo/GET/xrpc/com.atproto.repo.describeRepo) 115 115 pub fn describe_repository( 116 - request request: request.Request(_), 117 - repository repository: String, 116 + request: request.Request(_), 117 + handle: String, 118 118 ) -> request.Request(_) { 119 119 request 120 120 |> request.set_method(http.Get) 121 121 |> request.set_path(com_atproto_repo <> ".describeRepo") 122 - |> request.set_query([#("repo", repository)]) 122 + |> request.set_query([#("repo", handle)]) 123 123 } 124 124 125 125 /// Get a single record from a repository. ··· 142 142 /// 143 143 /// Documentation: [/xrpc/com.atproto.repo.getRecord](https://endpoints.bsky.app/#bluesky-app/tag/comatprotorepo/GET/xrpc/com.atproto.repo.getRecord) 144 144 pub fn get_record( 145 - request request: request.Request(_), 146 - repository repository: String, 145 + request: request.Request(_), 146 + handle: String, 147 147 rkey rkey: String, 148 148 collection collection: String, 149 149 cid cid: option.Option(String), 150 150 ) -> request.Request(_) { 151 151 let query = [ 152 - #("repo", repository), 152 + #("repo", handle), 153 153 #("rkey", rkey), 154 154 #("collection", collection), 155 155 ] ··· 187 187 /// 188 188 /// Documentation: [/xrpc/com.atproto.repo.listRecords](https://endpoints.bsky.app/#bluesky-app/tag/comatprotorepo/GET/xrpc/com.atproto.repo.listRecords) 189 189 pub fn list_records( 190 - request request: request.Request(_), 191 - repository repository: String, 190 + request: request.Request(_), 191 + handle: String, 192 192 collection collection: String, 193 193 limit limit: option.Option(Int), 194 194 cursor cursor: option.Option(String), 195 195 reverse reverse: option.Option(Bool), 196 196 ) -> request.Request(_) { 197 197 let query = [ 198 - #("repo", repository), 198 + #("repo", handle), 199 199 #("collection", collection), 200 200 ] 201 201 ··· 234 234 /// |> possum.list_standard_documents("kacaii.dev", option.None) 235 235 /// ``` 236 236 pub fn list_standard_documents( 237 - request request: request.Request(_), 238 - handle handle: String, 237 + request: request.Request(_), 238 + handle: String, 239 239 limit limit: option.Option(Int), 240 240 ) -> request.Request(_) { 241 241 list_records( 242 - request:, 243 - repository: handle, 242 + request, 243 + handle, 244 244 collection: "site.standard.document", 245 245 limit:, 246 246 cursor: option.None,
+19 -19
src/possum/bluesky.gleam
··· 6 6 7 7 /// A declaration of a Bluesky account profile. 8 8 pub fn get_profile( 9 - request request: request.Request(_), 10 - handle handle: String, 9 + request: request.Request(_), 10 + handle: String, 11 11 ) -> request.Request(_) { 12 12 possum.list_records( 13 - request:, 14 - repository: handle, 13 + request, 14 + handle, 15 15 collection: "app.bsky.actor.profile", 16 16 limit: option.Some(1), 17 17 cursor: option.None, ··· 21 21 22 22 /// Record declaring a social 'follow' relationship of another account. 23 23 pub fn list_folowing( 24 - request request: request.Request(_), 25 - handle handle: String, 26 - limit limit: option.Option(Int), 24 + request: request.Request(_), 25 + handle: String, 26 + limit: option.Option(Int), 27 27 ) -> request.Request(_) { 28 28 possum.list_records( 29 - request:, 30 - repository: handle, 29 + request, 30 + handle, 31 31 collection: "app.bsky.graph.follow", 32 32 limit:, 33 33 cursor: option.None, ··· 37 37 38 38 /// Get bluesky posts 39 39 pub fn list_posts( 40 - request request: request.Request(_), 41 - handle handle: String, 42 - limit limit: option.Option(Int), 40 + request: request.Request(_), 41 + handle: String, 42 + limit: option.Option(Int), 43 43 ) -> request.Request(_) { 44 44 possum.list_records( 45 - request:, 46 - repository: handle, 45 + request, 46 + handle, 47 47 collection: "app.bsky.feed.post", 48 48 limit:, 49 49 cursor: option.None, ··· 53 53 54 54 /// Get bluesky likes 55 55 pub fn list_likes( 56 - request request: request.Request(_), 57 - handle handle: String, 58 - limit limit: option.Option(Int), 56 + request: request.Request(_), 57 + handle: String, 58 + limit: option.Option(Int), 59 59 ) -> request.Request(_) { 60 60 possum.list_records( 61 - request:, 62 - repository: handle, 61 + request, 62 + handle, 63 63 collection: "app.bsky.feed.like", 64 64 limit:, 65 65 cursor: option.None,
+18 -18
src/possum/tangled.gleam
··· 6 6 7 7 /// A declaration of a Tangled account profile. 8 8 pub fn get_profile( 9 - request request: request.Request(_), 10 - handle handle: String, 9 + request: request.Request(_), 10 + handle: String, 11 11 ) -> request.Request(_) { 12 12 possum.list_records( 13 - request:, 14 - repository: handle, 13 + request, 14 + handle, 15 15 collection: "sh.tangled.actor.profile", 16 16 limit: option.Some(1), 17 17 cursor: option.None, ··· 20 20 } 21 21 22 22 pub fn list_stars( 23 - request request: request.Request(_), 24 - handle handle: String, 23 + request: request.Request(_), 24 + handle: String, 25 25 limit limit: option.Option(Int), 26 26 ) -> request.Request(_) { 27 27 possum.list_records( 28 - request:, 29 - repository: handle, 28 + request, 29 + handle, 30 30 collection: "sh.tangled.feed.star", 31 31 limit:, 32 32 cursor: option.None, ··· 35 35 } 36 36 37 37 pub fn list_repositories( 38 - request request: request.Request(_), 39 - handle handle: String, 38 + request: request.Request(_), 39 + handle: String, 40 40 limit limit: option.Option(Int), 41 41 ) -> request.Request(_) { 42 42 possum.list_records( 43 - request:, 44 - repository: handle, 43 + request, 44 + handle, 45 45 collection: "sh.tangled.repo", 46 46 limit:, 47 47 cursor: option.None, ··· 50 50 } 51 51 52 52 pub fn list_issues( 53 - request request: request.Request(_), 54 - handle handle: String, 53 + request: request.Request(_), 54 + handle: String, 55 55 limit limit: option.Option(Int), 56 56 ) -> request.Request(_) { 57 57 possum.list_records( 58 - request:, 59 - repository: handle, 58 + request, 59 + handle, 60 60 collection: "sh.tangled.repo.issue", 61 61 limit:, 62 62 cursor: option.None, ··· 70 70 limit limit: option.Option(Int), 71 71 ) -> request.Request(_) { 72 72 possum.list_records( 73 - request:, 74 - repository: handle, 73 + request, 74 + handle, 75 75 collection: "sh.tangled.string", 76 76 limit:, 77 77 cursor: option.None,