import { BaseApi } from "./base-api.ts"; export type Token = { id: number, name: string, scopes: string[], sha1: string, token_last_eight: string, } export class TokenApi extends BaseApi { constructor(baseUrl: string, private tokenName: string) { super(baseUrl); } async listTokens(username: string, secret: string): Promise { return await this.request(`/api/v1/users/${username}/tokens`, { method: "GET", headers: { "Authorization": `Basic ${btoa(`${username}:${secret}`)}`, "Content-Type": "application/json", }, }); } async deleteToken(username: string, secret: string, tokenId: number): Promise { const result = await this.request(`/api/v1/users/${username}/tokens/${tokenId}`, { method: "DELETE", headers: { "Authorization": `Basic ${btoa(`${username}:${secret}`)}`, "Content-Type": "application/json", }, }); return result !== undefined; } async createToken(username: string, secret: string): Promise { return await this.request(`/api/v1/users/${username}/tokens`, { method: "POST", headers: { "Authorization": `Basic ${btoa(`${username}:${secret}`)}`, "Content-Type": "application/json", }, body: JSON.stringify({ name: this.tokenName, scopes: ["write:user", "read:user"], }), }); } }