/exfacebook

Facebook API

Primary LanguageElixirMIT LicenseMIT

exfacebok

Inspired by koala gem in Ruby

Documentation

Installation

If available in Hex, 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

  {:ok, pid} = Exfacebook.start_link

  {:ok, attributes} = Exfacebook.get_object(pid, :me, %{access_token: "access-token"})
  {:ok, %{"data" => collection}} = response = Exfacebook.get_connections(pid, :feed, %{fields: "id, name", access_token: "access-token"})
  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:

  [{: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:

  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.

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

Examples

  iex -S mix
  Code.require_file("example.exs", "examples/")

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

TODO:

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