Packages

A library for interacting with the GroupMe API.

Current section

Files

Jump to
group_me lib groups.ex
Raw

lib/groups.ex

defmodule GroupMe.Groups do
# GROUPS
# Index
def list(token) when token == nil, do: {:error, "Token is required"}
def list(token) do
url = "https://api.groupme.com/v3/groups?token=#{token}"
case GroupMe.Request.get(url) do
{:ok, response} ->
GroupMe.Request.handle_response(response)
{:error, reason} -> {:error, reason}
end
end
def list!(token) do
case list(token) do
{:ok, response} -> response
{:error, reason} -> throw(reason)
end
end
# Former
def list_former(token) when token == nil, do: {:error, "Token is required"}
def list_former(token) do
url = "https://api.groupme.com/v3/groups/former?token=#{token}"
case GroupMe.Request.get(url) do
{:ok, response} ->
GroupMe.Request.handle_response(response)
{:error, reason} -> {:error, reason}
end
end
def list_former!(token) do
case list_former(token) do
{:ok, response} -> response
{:error, reason} -> throw(reason)
end
end
# Show
def find(token, _) when token == nil, do: {:error, "Token is required"}
def find(_, group_id) when group_id == nil, do: {:error, "Group ID is required"}
def find(token, group_id) do
url = "https://api.groupme.com/v3/groups/#{group_id}?token=#{token}"
case GroupMe.Request.get(url) do
{:ok, response} ->
GroupMe.Request.handle_response(response)
{:error, reason} -> {:error, reason}
end
end
def find!(token, group_id) do
case find(token, group_id) do
{:ok, response} -> response
{:error, reason} -> throw(reason)
end
end
# Create
# name required
# string — Primary name of the group. Maximum 140 characters
# description
# string — A subheading for the group. Maximum 255 characters
# image_url
# string — GroupMe Image Service URL
# share
# boolean — If you pass a true value for share, we'll generate a share URL. Anybody with this URL can join the group.
def create(token, _) when token == nil, do: {:error, "Token is required"}
def create(token, options) do
if !Map.has_key?(options, :name) do
{:error, "Required params name not found."}
else
url = "https://api.groupme.com/v3/groups?token=#{token}"
case GroupMe.Request.post(url, options) do
{:ok, response} -> GroupMe.Request.handle_response(response)
{:error, reason} -> {:error, reason}
end
end
end
def create!(token, options) do
case create(token, options) do
{:ok, response} -> response
{:error, reason} -> throw(reason)
end
end
# Update
# name - string
# description - string
# image_url - string
# office_mode - boolean
# share - boolean
# — If you pass a true value for share, we'll generate a share URL. Anybody with this URL can join the group.
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}/update?token=#{token}"
case GroupMe.Request.post(url, 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
# Destroy
def delete(nil, _), do: {:error, "Token is required"}
def delete(_, nil), do: {:error, "Group ID is required"}
def delete(token, group_id) do
url = "https://api.groupme.com/v3/groups/#{group_id}/destroy?token=#{token}"
case GroupMe.Request.post(url, %{}) do
{:ok, response} -> GroupMe.Request.handle_response(response)
{:error, reason} -> {:error, reason}
end
end
def delete!(token, group_id) do
case delete(token, group_id) do
{:ok, response} -> response
{:error, reason} -> throw(reason)
end
end
def join(nil, _, _), do: {:error, "Token is required"}
def join(_, nil, _), do: {:error, "Group ID is required"}
def join(_, _, nil), do: {:error, "Share token is required"}
def join(token, group_id, shared_token) do
url = "https://api.groupme.com/v3/groups/#{group_id}/join/#{shared_token}?token=#{token}"
case GroupMe.Request.post(url, %{}) do
{:ok, response} -> GroupMe.Request.handle_response(response)
{:error, reason} -> {:error, reason}
end
end
def join!(token, group_id, shared_token) do
case join(token, group_id, shared_token) do
{:ok, response} -> response
{:error, reason} -> throw(reason)
end
end
# Rejoin
def rejoin(nil, _), do: {:error, "Token is required"}
def rejoin(_, nil), do: {:error, "Group ID is required"}
def rejoin(token, group_id) do
url = "https://api.groupme.com/v3/groups/rejoin?token=#{token}"
case GroupMe.Request.post(url, %{group_id: group_id}) do
{:ok, response} -> GroupMe.Request.handle_response(response)
{:error, reason} -> {:error, reason}
end
end
def rejoin!(token, group_id) do
case rejoin(token, group_id) do
{:ok, response} -> response
{:error, reason} -> throw(reason)
end
end
end