Current section
Files
Jump to
Current section
Files
lib/admin/default/scheduled_task.ex
defmodule PlayfabEx.Admin.Default.ScheduledTask do
@doc """
Abort an ongoing task instance.
@link https://api.playfab.com/documentation/admin/method/AbortTaskInstance
"""
@spec abort_task_instance(map()) :: {:ok, map} | {:error, String.t}
def abort_task_instance(params) do
fetch("Admin/AbortTaskInstance", params)
end
@doc """
Create an ActionsOnPlayersInSegment task, which iterates through all players in a segment to execute action.
@link https://api.playfab.com/documentation/admin/method/CreateActionsOnPlayersInSegmentTask
"""
@spec create_actions_on_players_in_segment_task(map()) :: {:ok, map} | {:error, String.t}
def create_actions_on_players_in_segment_task(params) do
fetch("Admin/CreateActionsOnPlayersInSegmentTask", params)
end
@doc """
Create a CloudScript task, which can run a CloudScript on a schedule.
@link https://api.playfab.com/documentation/admin/method/CreateCloudScriptTask
"""
@spec create_cloud_script_task(map()) :: {:ok, map} | {:error, String.t}
def create_cloud_script_task(params) do
fetch("Admin/CreateCloudScriptTask", params)
end
@doc """
Delete a task.
@link https://api.playfab.com/documentation/admin/method/DeleteTask
"""
@spec delete_task(map()) :: {:ok, map} | {:error, String.t}
def delete_task(params) do
fetch("Admin/DeleteTask", params)
end
@doc """
Get information about a ActionsOnPlayersInSegment task instance.
@link https://api.playfab.com/documentation/admin/method/GetActionsOnPlayersInSegmentTaskInstance
"""
@spec get_actions_on_players_in_segment_task_instance(map()) :: {:ok, map} | {:error, String.t}
def get_actions_on_players_in_segment_task_instance(params) do
fetch("Admin/GetActionsOnPlayersInSegmentTaskInstance", params)
end
@doc """
Get detail information about a CloudScript task instance.
@link https://api.playfab.com/documentation/admin/method/GetCloudScriptTaskInstance
"""
@spec get_cloud_script_task_instance(map()) :: {:ok, map} | {:error, String.t}
def get_cloud_script_task_instance(params) do
fetch("Admin/GetCloudScriptTaskInstance", params)
end
@doc """
Query for task instances by task, status, or time range.
@link https://api.playfab.com/documentation/admin/method/GetTaskInstances
"""
@spec get_task_instances(map()) :: {:ok, map} | {:error, String.t}
def get_task_instances(params) do
fetch("Admin/GetTaskInstances", params)
end
@doc """
Get definition information on a specified task or all tasks within a title.
@link https://api.playfab.com/documentation/admin/method/GetTasks
"""
@spec get_tasks(map()) :: {:ok, map} | {:error, String.t}
def get_tasks(params) do
fetch("Admin/GetTasks", params)
end
@doc """
Run a task immediately regardless of its schedule.
@link https://api.playfab.com/documentation/admin/method/RunTask
"""
@spec run_task(map()) :: {:ok, map} | {:error, String.t}
def run_task(params) do
fetch("Admin/RunTask", params)
end
@doc """
Update an existing task.
@link https://api.playfab.com/documentation/admin/method/UpdateTask
"""
@spec update_task(map()) :: {:ok, map} | {:error, String.t}
def update_task(params) do
fetch("Admin/UpdateTask", 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