An open API service indexing awesome lists of open source software.

https://github.com/moomerman/xrpc

Implementation of the XRPC client spec in Elixir.
https://github.com/moomerman/xrpc

Last synced: 12 months ago
JSON representation

Implementation of the XRPC client spec in Elixir.

Awesome Lists containing this project

README

          

# XRPC

Implementation of the [XRPC](https://atproto.com/specs/xrpc) client spec in Elixir.

## Installation

The package can be installed by adding `xrpc` to your list of dependencies in `mix.exs`:

```elixir
def deps do
[
{:xrpc, "~> 0.1.0"}
]
end
```

The docs can be found at .

## Usage

Non-authenticated example:

```elixir
XRPC.Client.new("https://bsky.social")
|> XRPC.query("com.atproto.identity.resolveHandle", params: [handle: "atproto.com"])

{:ok, %{"did" => "did:plc:ewvi7nxzyoun6zhxrhs64oiz"}}
```

Authenticated example:

```elixir
access_token = "abcd1234"
XRPC.Client.new("https://bsky.social", access_token)
|> XRPC.query("app.bsky.actor.getProfile", params: [actor: "atproto.com"])

{:ok,
%{
"avatar" =>
"https://cdn.bsky.social/imgproxy/EoCjH1lIwK1YNFuG_xYYK76vuHhEAQKWAkzlz8BSO_Q/rs:fill:1000:1000:1:0/plain/bafkreibjfgx2gprinfvicegelk5kosd6y2frmqpqzwqkg7usac74l3t2v4@jpeg",
"banner" =>
"https://cdn.bsky.social/imgproxy/Goxx1Ze2lScFMdlEXE0pVTzXBxsIuwbdxhYkWo1CVUA/rs:fill:3000:1000:1:0/plain/bafkreib4xwiqhxbqidwwatoqj7mrx6mr7wlc5s6blicq5wq2qsq37ynx5y@jpeg",
"description" => "Social networking technology created by Bluesky.",
"did" => "did:plc:ewvi7nxzyoun6zhxrhs64oiz",
"displayName" => "AT Protocol",
"followersCount" => 1878,
"followsCount" => 11,
"handle" => "atproto.com",
"postsCount" => 10,
...
}}
```

Example error:

```elixir
XRPC.Client.new("https://bsky.social")
|> XRPC.query("app.bsky.actor.getProfile", params: [actor: "atproto.com"])

{:error, %{"error" => "AuthenticationRequired", "message" => "Authentication Required"}}
```