Packages

A library for interacting with the GroupMe API.

Current section

Files

Jump to
group_me lib members.ex
Raw

lib/members.ex

defmodule GroupMe.Members do
# https://dev.groupme.com/docs/v3#members
# MEMBERS
# Add
# members
# array — nickname is required. You must use one of the following identifiers: user_id, phone_number, or email.
# object
# nickname (string) required
# user_id (string)
# phone_number (string)
# email (string)
# guid (string)
# This is async so users are not going to be added real time.
def create(nil, _, _), do: {:error, "Token is required"}
def create(_, nil, _), do: {:error, "Group ID is required"}
def create(token, group_id, options) do
url = "https://api.groupme.com/v3/groups/#{group_id}/members/add?token=#{token}"
case GroupMe.Request.post(url, %{members: options}) do
{:ok, response} -> GroupMe.Request.handle_response(response)
{:error, reason} -> {:error, reason}
end
end
def create!(token, group_id, options) do
case create(token, group_id, options) do
{:ok, response} -> response
{:error, reason} -> throw(reason)
end
end
# Results
# Keep in mind that results are temporary -- they will only be available for 1 hour after the add request.
# GET /groups/:group_id/members/results/:results_id
def results(nil, _, _), do: {:error, "Token is required"}
def results(_, nil, _), do: {:error, "Group ID is required"}
def results(_, _, nil), do: {:error, "Results ID is required"}
def results(token, group_id, results_id) do
url = "https://api.groupme.com/v3/groups/#{group_id}/members/results/#{results_id}?token=#{token}"
case GroupMe.Request.get(url) do
{:ok, response} ->
GroupMe.Request.handle_response(response)
{:error, reason} -> {:error, reason}
end
end
def results!(token, group_id, results_id) do
case results(token, group_id, results_id) do
{:ok, response} -> response
{:error, reason} -> throw(reason)
end
end
# Remove
# POST /groups/:group_id/members/:membership_id/remove
# Parameters
# membership_id required
# string — Please note that this isn't the same as the user ID. In the members key in the group JSON, this is the id value, not the user_id.
def remove(nil, _, _), do: {:error, "Token is required"}
def remove(_, nil, _), do: {:error, "Group ID is required"}
def remove(_, _, nil), do: {:error, "Membership ID is required"}
def remove(token, group_id, membership_id) do
url = "https://api.groupme.com/v3/groups/#{group_id}/members/#{membership_id}/remove?token=#{token}"
case GroupMe.Request.post(url, %{}) do
{:ok, response} ->
GroupMe.Request.handle_response(response)
{:error, reason} -> {:error, reason}
end
end
def remove!(token, group_id, membership_id) do
case remove(token, group_id, membership_id) do
{:ok, response} -> response
{:error, reason} -> throw(reason)
end
end
# Update
# Update your nickname.
# POST /groups/:group_id/memberships/update
def update(nil, _, _), do: {:error, "Token is required"}
def update(_, nil, _), do: {:error, "Group ID is required"}
def update(token, group_id, options) do
url = "https://api.groupme.com/v3/groups/#{group_id}/memberships/update?token=#{token}"
case GroupMe.Request.post(url, %{membership: options}) do
{:ok, response} ->
GroupMe.Request.handle_response(response)
{:error, reason} -> {:error, reason}
end
end
def update!(token, group_id, options) do
case update(token, group_id, options) do
{:ok, response} -> response
{:error, reason} -> throw(reason)
end
end
end