Current section
Files
Jump to
Current section
Files
lib/server/default/shared_group_data.ex
defmodule PlayfabEx.Server.Default.SharedGroupData do
@doc """
Adds users to the set of those able to update both the shared data, as well as the set of users in the group. Only users in the group (and the server) can add new members. Shared Groups are designed for sharing data between a very small number of players, please see our guide:
@link https://api.playfab.com/documentation/server/method/AddSharedGroupMembers
"""
@spec add_shared_group_members(map()) :: {:ok, map} | {:error, String.t}
def add_shared_group_members(params) do
fetch("Server/AddSharedGroupMembers", params)
end
@doc """
Deletes a shared group, freeing up the shared group ID to be reused for a new group. Shared Groups are designed for sharing data between a very small number of players, please see our guide:
@link https://api.playfab.com/documentation/server/method/CreateSharedGroup
"""
@spec create_shared_group(map()) :: {:ok, map} | {:error, String.t}
def create_shared_group(params) do
fetch("Server/CreateSharedGroup", params)
end
@doc """
Removes users from the set of those able to update the shared data and the set of users in the group. Only users in the group can remove members. If as a result of the call, zero users remain with access, the group and its associated data will be deleted. Shared Groups are designed for sharing data between a very small number of players, please see our guide:
@link https://api.playfab.com/documentation/server/method/DeleteSharedGroup
"""
@spec delete_shared_group(map()) :: {:ok, map} | {:error, String.t}
def delete_shared_group(params) do
fetch("Server/DeleteSharedGroup", params)
end
@doc """
@link https://api.playfab.com/documentation/server/method/GetSharedGroupData
"""
@spec get_shared_group_data(map()) :: {:ok, map} | {:error, String.t}
def get_shared_group_data(params) do
fetch("Server/GetSharedGroupData", params)
end
@doc """
@link https://api.playfab.com/documentation/server/method/RemoveSharedGroupMembers
"""
@spec remove_shared_group_members(map()) :: {:ok, map} | {:error, String.t}
def remove_shared_group_members(params) do
fetch("Server/RemoveSharedGroupMembers", params)
end
@doc """
@link https://api.playfab.com/documentation/server/method/UpdateSharedGroupData
"""
@spec update_shared_group_data(map()) :: {:ok, map} | {:error, String.t}
def update_shared_group_data(params) do
fetch("Server/UpdateSharedGroupData", params)
end
defp fetch(path, params) do
string_params = Poison.encode!(params)
try do
response = Tesla.post("https://#{title_id()}.playfabapi.com/#{path}", string_params, headers: %{"Content-Type" => "application/json", "X-SecretKey" => secret_key()})
|> Map.get(:body)
|> Poison.decode!
{:ok, response}
rescue
_ -> {:error, "Unable to fetch data from playfab"}
end
end
defp title_id() do
Application.get_env(:playfab_ex, :title_id)
end
defp secret_key() do
Application.get_env(:playfab_ex, :secret_key)
end
end