# NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
# https://openapi-generator.tech
# Do not edit the class manually.
defmodule VRChat.Api.Favorites do
@moduledoc """
API calls for all endpoints tagged `Favorites`.
"""
alias VRChat.Connection
import VRChat.RequestBuilder
@doc """
Add Favorite
Add a new favorite. Friend groups are named `group_0` through `group_3`. Avatar and World groups are named `avatars1` to `avatars4` and `worlds1` to `worlds4`. You cannot add people whom you are not friends with to your friends list. Destroying a friendship removes the person as favorite on both sides.
## Parameters
- connection (VRChat.Connection): Connection to server
- opts (KeywordList): [optional] Optional parameters
- :body (AddFavoriteRequest):
## Returns
{:ok, VRChat.Model.Favorite.t} on success
{:error, Tesla.Env.t} on failure
"""
@spec add_favorite(Tesla.Env.client, keyword()) :: {:ok, VRChat.Model.Error.t} | {:ok, VRChat.Model.Favorite.t} | {:error, Tesla.Env.t}
def add_favorite(connection, opts \\ []) do
optional_params = %{
:body => :body
}
%{}
|> method(:post)
|> url("/favorites")
|> add_optional_params(optional_params, opts)
|> ensure_body()
|> Enum.into([])
|> (&Connection.request(connection, &1)).()
|> evaluate_response([
{ 200, %VRChat.Model.Favorite{}},
{ 400, %VRChat.Model.Error{}},
{ 403, %VRChat.Model.Error{}}
])
end
@doc """
Clear Favorite Group
Clear ALL contents of a specific favorite group.
## Parameters
- connection (VRChat.Connection): Connection to server
- favorite_group_type (String.t): The type of group to fetch, must be a valid FavoriteType.
- favorite_group_name (String.t):
- user_id (String.t):
- opts (KeywordList): [optional] Optional parameters
## Returns
{:ok, VRChat.Model.Success.t} on success
{:error, Tesla.Env.t} on failure
"""
@spec clear_favorite_group(Tesla.Env.client, String.t, String.t, String.t, keyword()) :: {:ok, VRChat.Model.Success.t} | {:error, Tesla.Env.t}
def clear_favorite_group(connection, favorite_group_type, favorite_group_name, user_id, _opts \\ []) do
%{}
|> method(:delete)
|> url("/favorite/group/#{favorite_group_type}/#{favorite_group_name}/#{user_id}")
|> Enum.into([])
|> (&Connection.request(connection, &1)).()
|> evaluate_response([
{ 200, %VRChat.Model.Success{}}
])
end
@doc """
Show Favorite
Return information about a specific Favorite.
## Parameters
- connection (VRChat.Connection): Connection to server
- favorite_id (String.t):
- opts (KeywordList): [optional] Optional parameters
## Returns
{:ok, VRChat.Model.Favorite.t} on success
{:error, Tesla.Env.t} on failure
"""
@spec get_favorite(Tesla.Env.client, String.t, keyword()) :: {:ok, VRChat.Model.Error.t} | {:ok, VRChat.Model.Favorite.t} | {:error, Tesla.Env.t}
def get_favorite(connection, favorite_id, _opts \\ []) do
%{}
|> method(:get)
|> url("/favorites/#{favorite_id}")
|> Enum.into([])
|> (&Connection.request(connection, &1)).()
|> evaluate_response([
{ 200, %VRChat.Model.Favorite{}},
{ 401, %VRChat.Model.Error{}},
{ 404, %VRChat.Model.Error{}}
])
end
@doc """
Show Favorite Group
Fetch information about a specific favorite group.
## Parameters
- connection (VRChat.Connection): Connection to server
- favorite_group_type (String.t): The type of group to fetch, must be a valid FavoriteType.
- favorite_group_name (String.t):
- user_id (String.t):
- opts (KeywordList): [optional] Optional parameters
## Returns
{:ok, VRChat.Model.FavoriteGroup.t} on success
{:error, Tesla.Env.t} on failure
"""
@spec get_favorite_group(Tesla.Env.client, String.t, String.t, String.t, keyword()) :: {:ok, VRChat.Model.FavoriteGroup.t} | {:error, Tesla.Env.t}
def get_favorite_group(connection, favorite_group_type, favorite_group_name, user_id, _opts \\ []) do
%{}
|> method(:get)
|> url("/favorite/group/#{favorite_group_type}/#{favorite_group_name}/#{user_id}")
|> Enum.into([])
|> (&Connection.request(connection, &1)).()
|> evaluate_response([
{ 200, %VRChat.Model.FavoriteGroup{}}
])
end
@doc """
List Favorite Groups
Return a list of favorite groups owned by a user. Returns the same information as `getFavoriteGroups`.
## Parameters
- connection (VRChat.Connection): Connection to server
- opts (KeywordList): [optional] Optional parameters
- :n (integer()): The number of objects to return.
- :offset (integer()): A zero-based offset from the default object sorting from where search results start.
- :owner_id (String.t): The owner of whoms favorite groups to return. Must be a UserID.
## Returns
{:ok, [%FavoriteGroup{}, ...]} on success
{:error, Tesla.Env.t} on failure
"""
@spec get_favorite_groups(Tesla.Env.client, keyword()) :: {:ok, list(VRChat.Model.FavoriteGroup.t)} | {:ok, VRChat.Model.Error.t} | {:error, Tesla.Env.t}
def get_favorite_groups(connection, opts \\ []) do
optional_params = %{
:n => :query,
:offset => :query,
:ownerId => :query
}
%{}
|> method(:get)
|> url("/favorite/groups")
|> add_optional_params(optional_params, opts)
|> Enum.into([])
|> (&Connection.request(connection, &1)).()
|> evaluate_response([
{ 200, [%VRChat.Model.FavoriteGroup{}]},
{ 401, %VRChat.Model.Error{}}
])
end
@doc """
List Favorites
Returns a list of favorites.
## Parameters
- connection (VRChat.Connection): Connection to server
- opts (KeywordList): [optional] Optional parameters
- :n (integer()): The number of objects to return.
- :offset (integer()): A zero-based offset from the default object sorting from where search results start.
- :type (String.t): The type of favorites to return, FavoriteType.
- :tag (String.t): Tags to include (comma-separated). Any of the tags needs to be present.
## Returns
{:ok, [%Favorite{}, ...]} on success
{:error, Tesla.Env.t} on failure
"""
@spec get_favorites(Tesla.Env.client, keyword()) :: {:ok, list(VRChat.Model.Favorite.t)} | {:ok, VRChat.Model.Error.t} | {:error, Tesla.Env.t}
def get_favorites(connection, opts \\ []) do
optional_params = %{
:n => :query,
:offset => :query,
:type => :query,
:tag => :query
}
%{}
|> method(:get)
|> url("/favorites")
|> add_optional_params(optional_params, opts)
|> Enum.into([])
|> (&Connection.request(connection, &1)).()
|> evaluate_response([
{ 200, [%VRChat.Model.Favorite{}]},
{ 401, %VRChat.Model.Error{}}
])
end
@doc """
Remove Favorite
Remove a favorite from your favorites list.
## Parameters
- connection (VRChat.Connection): Connection to server
- favorite_id (String.t):
- opts (KeywordList): [optional] Optional parameters
## Returns
{:ok, VRChat.Model.Success.t} on success
{:error, Tesla.Env.t} on failure
"""
@spec remove_favorite(Tesla.Env.client, String.t, keyword()) :: {:ok, VRChat.Model.Success.t} | {:ok, VRChat.Model.Error.t} | {:error, Tesla.Env.t}
def remove_favorite(connection, favorite_id, _opts \\ []) do
%{}
|> method(:delete)
|> url("/favorites/#{favorite_id}")
|> Enum.into([])
|> (&Connection.request(connection, &1)).()
|> evaluate_response([
{ 200, %VRChat.Model.Success{}},
{ 401, %VRChat.Model.Error{}},
{ 404, %VRChat.Model.Error{}}
])
end
@doc """
Update Favorite Group
Update information about a specific favorite group.
## Parameters
- connection (VRChat.Connection): Connection to server
- favorite_group_type (String.t): The type of group to fetch, must be a valid FavoriteType.
- favorite_group_name (String.t):
- user_id (String.t):
- opts (KeywordList): [optional] Optional parameters
- :body (UpdateFavoriteGroupRequest):
## Returns
{:ok, nil} on success
{:error, Tesla.Env.t} on failure
"""
@spec update_favorite_group(Tesla.Env.client, String.t, String.t, String.t, keyword()) :: {:ok, nil} | {:error, Tesla.Env.t}
def update_favorite_group(connection, favorite_group_type, favorite_group_name, user_id, opts \\ []) do
optional_params = %{
:body => :body
}
%{}
|> method(:put)
|> url("/favorite/group/#{favorite_group_type}/#{favorite_group_name}/#{user_id}")
|> add_optional_params(optional_params, opts)
|> ensure_body()
|> Enum.into([])
|> (&Connection.request(connection, &1)).()
|> evaluate_response([
{ 200, false}
])
end
end