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: 8 days ago
JSON representation
Facebook API
- Host: GitHub
- URL: https://github.com/oivoodoo/exfacebook
- Owner: oivoodoo
- License: mit
- Created: 2016-07-15T18:10:33.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2021-02-04T21:04:07.000Z (almost 4 years ago)
- Last Synced: 2024-12-26T08:42:10.582Z (16 days ago)
- Topics: batch-api, elixir, elixir-lang, facebook, facebook-api
- Language: Elixir
- Size: 104 KB
- Stars: 18
- Watchers: 2
- Forks: 5
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- freaking_awesome_elixir - Elixir - Facebook API, written in Elixir using similar methods like Ruby koala gem. (Third Party APIs)
- fucking-awesome-elixir - exfacebook - Facebook API, written in Elixir using similar methods like Ruby koala gem. (Third Party APIs)
- awesome-elixir - exfacebook - Facebook API, written in Elixir using similar methods like Ruby koala gem. (Third Party APIs)
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"}]
end2. 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