artifacts/characters/characters.go

73 lines
1.8 KiB
Go
Raw Normal View History

2024-07-31 21:09:11 +00:00
// Package characters holds functions that interact with the characters
package characters
import (
"fmt"
"git.stinnesbeck.com/nils/artifacts/api"
)
// GetMy retrieves all characters from your account
func GetMy() ([]Character, error) {
// these are the possible response codes, other than 200 OK
responseCodes := map[int]string{
404: "Characters not found",
}
// use Get function to retrieve characters
return api.Get[[]Character]("/my/characters/", responseCodes)
}
// GetAll tries to retrieve all characters on the server
func GetAll() ([]Character, error) {
// these are the possible response codes, other than 200 OK
responseCodes := map[int]string{
404: "Characters not found",
}
// use Get function to retrieve characters
return api.Get[[]Character]("/characters/", responseCodes)
}
// Get tries to retrieve a character by name
func Get(name string) (Character, error) {
// these are the possible response codes, other than 200 OK
responseCodes := map[int]string{
404: "Character not found",
}
// use Get function to retrieve character
return api.Get[Character](fmt.Sprintf("/characters/%s", name), responseCodes)
}
// Create will try to create a new character
func Create(name string, skin Skin) (Character, error) {
if len(name) > 12 {
return Character{}, fmt.Errorf("make sure to provide a name that is >=3 and <=12 characters long")
}
// these are the possible response codes, other than 200 OK
responseCodes := map[int]string{
494: "Name already used",
495: "Maximum characters reached on your account",
}
newChar := Character{
Name: name,
Skin: skin,
}
return api.Post[Character]("/characters/create", newChar, responseCodes)
}
2024-08-01 20:50:56 +00:00
func (c *Character) Refresh() error {
char, err := Get(c.Name)
if err != nil {
return err
}
*c = char
return nil
}