Current section

Files

Jump to
messenger_bot lib messenger_bot services user_profile.ex
Raw

lib/messenger_bot/services/user_profile.ex

defmodule MessengerBot.Service.UserProfile do
@moduledoc """
Facebook MessengerBot 'UserProfile' API
"""
alias MessengerBot.Client
alias MessengerBot.Payload.{UserProfileRequest, UserProfileResponse}
alias MessengerBot.Config
@base_url "https://graph.facebook.com/v2.6"
@user_profile %UserProfileResponse{}
@doc """
Fetch user profile from facebook api
"""
@spec fetch(String.t, UserProfileRequest.t) :: UserProfileResponse.t
def fetch(page_id, %UserProfileRequest{} = request) do
token = Config.page_token(page_id)
url = url_for(request, token)
case Client.get(url) do
{:error, _} -> @user_profile
response -> Poison.decode!(response.body, as: @user_profile, keys: :atoms)
end
end
defp url_for(request, token) do
"#{@base_url}/#{request.id}?fields=#{request.fields}&access_token=#{token}"
end
end