mirror of
https://gitlab.com/cyclane/sbdatatracker.git
synced 2025-04-19 12:25:05 +00:00
122 lines
2.8 KiB
TypeScript
122 lines
2.8 KiB
TypeScript
import type { Graph, Tracker } from "../routes/api/_types";
|
|
import type { Profile } from "./hypixel";
|
|
import { requestWithDefaults } from "./util";
|
|
|
|
const request = requestWithDefaults();
|
|
|
|
/**
|
|
* Login into SBDataTracker backend
|
|
* @param params Login parameters (no parameters = refresh)
|
|
* @returns Login details
|
|
*/
|
|
export async function postLogin(params?: {
|
|
username: string;
|
|
password: string;
|
|
}): Promise<{
|
|
token: string;
|
|
username: string;
|
|
expires: number;
|
|
}> {
|
|
let url = "/api/login";
|
|
if (params) {
|
|
url += `?username=${encodeURIComponent(
|
|
params.username
|
|
)}&password=${encodeURIComponent(params.password)}`;
|
|
}
|
|
let response = await request(url, { method: "POST" });
|
|
return response.json();
|
|
}
|
|
|
|
/**
|
|
* Logout
|
|
* @param token Authorization token
|
|
*/
|
|
export async function postLogout(token: string) {
|
|
await request("/api/logout", {
|
|
method: "POST",
|
|
headers: { Authorization: token }
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Get a list of profiles
|
|
* @param token Authorization token
|
|
* @returns A list of profiles
|
|
*/
|
|
export async function getProfiles(
|
|
token?: string
|
|
): Promise<(Tracker & { profile: string })[]> {
|
|
let response = await request(
|
|
"/api/profiles",
|
|
token ? { headers: { Authorization: token } } : {}
|
|
);
|
|
return response.json();
|
|
}
|
|
|
|
/**
|
|
* Get a list of skyblock profiles by player
|
|
* @param player Player's UUID
|
|
* @returns A list of profiles
|
|
*/
|
|
export async function getPlayerProfiles(player: string): Promise<Profile[]> {
|
|
let response = await request(`/api/profiles/${player}`);
|
|
return response.json();
|
|
}
|
|
|
|
/**
|
|
* Get a list of graphs
|
|
* @param token Authorization token
|
|
* @returns A list of profiles
|
|
*/
|
|
export async function getGraphs(
|
|
token?: string
|
|
): Promise<(Graph & { graph: string })[]> {
|
|
let response = await request(
|
|
"/api/graphs",
|
|
token ? { headers: { Authorization: token } } : {}
|
|
);
|
|
return response.json();
|
|
}
|
|
|
|
/**
|
|
* Get a player username by UUID
|
|
* @param uuid Player's UUID
|
|
* @returns Player's username
|
|
*/
|
|
export async function getUsername(uuid: string): Promise<string> {
|
|
let response = await request(`/api/username?uuid=${uuid}`);
|
|
return response.json();
|
|
}
|
|
|
|
/**
|
|
* Get a player UUID by username
|
|
* @param username Player's username
|
|
* @returns Player's UUID
|
|
*/
|
|
export async function getUUID(username: string): Promise<string> {
|
|
let response = await request(`/api/uuid?username=${username}`);
|
|
return response.json();
|
|
}
|
|
|
|
/**
|
|
* Create a profile
|
|
* @param token Authorization token
|
|
* @param uuid Profile UUID
|
|
* @param member Member to assign the profile to
|
|
* @returns Tracker information
|
|
*/
|
|
export async function putProfiles(
|
|
token: string | undefined,
|
|
uuid: string,
|
|
member?: string
|
|
): Promise<Tracker & { _key: string }> {
|
|
let response = await request(
|
|
`/api/profiles?uuid=${uuid}` + (member ? `&member=${member}` : ""),
|
|
{
|
|
method: "PUT",
|
|
...(token ? { headers: { Authorization: token } } : {})
|
|
}
|
|
);
|
|
return response.json();
|
|
}
|