Aggiunte funzioni get, user number, search e create, aggiunte le docstring
This commit is contained in:
parent
33b50bca4e
commit
41178f4194
1 changed files with 67 additions and 3 deletions
|
@ -1,17 +1,81 @@
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
|
import {IAUser} from "./types/IAUser";
|
||||||
|
import {Identifier} from "./utils/IdentifierConstructor";
|
||||||
|
|
||||||
export default class IAManager {
|
export class IAManager {
|
||||||
token: string | undefined;
|
token: string | undefined;
|
||||||
URL = "https://api.thundernetwork.org";
|
URL = "https://api.thundernetwork.org";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor for IAManager class.
|
||||||
|
*
|
||||||
|
* @param {string} customURL - The custom URL to use.
|
||||||
|
* @param {string | undefined} token - The token to authenticate.
|
||||||
|
*/
|
||||||
constructor(customURL: string, token: string | undefined) {
|
constructor(customURL: string, token: string | undefined) {
|
||||||
this.URL = customURL || this.URL;
|
this.URL = customURL || this.URL;
|
||||||
this.token = token;
|
this.token = token;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Asynchronously retrieves the number of users from the IA API.
|
||||||
|
*
|
||||||
|
* @return {Promise<number>} The number of users.
|
||||||
|
* @throws {Error} If the API request fails or returns a 404 status.
|
||||||
|
*/
|
||||||
|
async userNumber() {
|
||||||
|
let req = await axios.get(`${this.URL}/IA`);
|
||||||
|
if (req.status == 404) throw new Error("Something went wrong");
|
||||||
|
return parseInt(req.data.number);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves a user from the IA API.
|
||||||
|
*
|
||||||
|
* @param {string|number} id - The ID of the user.
|
||||||
|
* @return {Promise<IAUser>} The user object.
|
||||||
|
* @throws {Error} If the API request fails or returns a 404 status.
|
||||||
|
*/
|
||||||
async get(id: string|number) {
|
async get(id: string|number) {
|
||||||
let req = await axios.get(`${this.URL}/IA/${id}`);
|
let req = await axios.get(`${this.URL}/IA/${id}`);
|
||||||
if (req.status == 404) throw new Error("User not Found");
|
if (req.status == 404) throw new Error("User not Found");
|
||||||
return req.data.user;
|
return new IAUser({
|
||||||
|
id: req.data.id,
|
||||||
|
username: req.data.username,
|
||||||
|
permissions: req.data.permissions,
|
||||||
|
credits: req.data.credits,
|
||||||
|
language: req.data.language
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Searches for a user by their identifier.
|
||||||
|
*
|
||||||
|
* @param {Identifier} identifier - The identifier to search for.
|
||||||
|
* @return {Promise<string>} The ID of the user.
|
||||||
|
* @throws {Error} If the API request fails or returns a 404 status.
|
||||||
|
*/
|
||||||
|
async search(identifier: Identifier) {
|
||||||
|
let req = await axios.get(`${this.URL}/IA?searchByIdentifier=${identifier.asString()}`);
|
||||||
|
if (req.status == 404) throw new Error("Something went wrong");
|
||||||
|
return String(req.data.id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Asynchronously creates a new user in the IA API.
|
||||||
|
*
|
||||||
|
* @param {string} username - The username of the user.
|
||||||
|
* @param {string} password - The password of the user.
|
||||||
|
* @param {Identifier} identifier - The identifier of the user.
|
||||||
|
* @return {string} The ID of the newly created user.
|
||||||
|
*/
|
||||||
|
async create(username: string, password: string, identifier: Identifier) {
|
||||||
|
let req = await axios.post(`${this.URL}/IA}`,
|
||||||
|
{
|
||||||
|
username,
|
||||||
|
password,
|
||||||
|
identifier
|
||||||
|
});
|
||||||
|
return req.data.id;
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue