Ecosyste.ms: Awesome

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

https://github.com/oivoodoo/exfacebook

Facebook API
https://github.com/oivoodoo/exfacebook

batch-api elixir elixir-lang facebook facebook-api

Last synced: about 2 months ago
JSON representation

Facebook API

Lists

README

        

# exfacebok

Inspired by koala gem in Ruby

[Documentation](https://hexdocs.pm/exfacebook/Exfacebook.html)

## Installation

If [available in Hex](https://hex.pm/docs/publish), the package can be installed as:

1. Add exfacebook to your list of dependencies in `mix.exs`:

def deps do
[{:exfacebook, "~> 0.0.9"}]
end

2. Ensure exfacebook is started before your application:

def application do
[applications: [:exfacebook]]
end

## Examples

```elixir
{:ok, pid} = Exfacebook.start_link

{:ok, attributes} = Exfacebook.get_object(pid, :me, %{access_token: "access-token"})
```

```elixir
{:ok, %{"data" => collection}} = response = Exfacebook.get_connections(pid, :feed, %{fields: "id, name", access_token: "access-token"})
```

```elixir
response = Exfacebook.get_connections(pid, :feed, %{fields: "id, name", access_token: "access-token"})
{:ok, %{"data" => collection1}} = response2 = Exfacebook.next_page(pid, response)
{:ok, %{"data" => collection2}} = Exfacebook.prev_page(pid, response2)
```

Example of batch requests:

```elixir
[{:ok, %{"data" => collection}}, {:ok, %{"id" => id, "name" => name}}] = Exfacebook.batch(%{access_token: "access-token"}, fn(api) ->
api = api |> Exfacebook.get_object(pid, :me, %{fields: "id, name"})
api = api |> Exfacebook.get_connections(pid, :feed, %{fields: "id, name"})
api
end)
```

Example of posting message to feed:

```elixir
Exfacebook.put_connections(:me, :feed, %{access_token: "access-token"}, %{message: "hello"})
```

Using `Exfacebook.Api` outside of GenServer. `Exfacebook` module is working as
proxy for accessing Api module by specifying `GET` requests as `call` and `PUT`
as `cast` actions.

```elixir
{:ok, attributes} = Exfacebook.Api.get_object(:me, %{access_token: "access-token"})
```

## Examples

```
iex -S mix
```

```elixir
Code.require_file("example.exs", "examples/")
```

It should produce logging messages about the objects and attributes from feed and me requests.

## TODO:

- [x] add test for get_connections
- [x] add test for next_page
- [x] add test for prev_page
- [x] batch api for get_object and get_connections
- [x] batch api for put_*
- [x] put_*
- [x] wrap api by GenServer for put operations as cast and get as call
- [x] realtime updates subscribe, list_subscriptions, unsubscribe, meet_challenge
- [x] add delete_* methods
- [x] add put video and image
- [x] add get exchange token