doggo.js
Version:
Typed client for Doggo.Ninja's public API
75 lines (74 loc) • 2.95 kB
TypeScript
import 'isomorphic-unfetch';
export interface File {
url: string;
shortName: string;
originalName: string;
mimeType: string;
uncachedHits: number;
updatedAt: number;
size: number;
parent?: string;
private: boolean;
ephemeralTimestamp: number | null;
hasPassword: boolean;
}
export interface Folder {
id: string;
name: string;
parent?: string;
}
export declare type User = {
id: string;
name: string;
email?: string;
admin: boolean;
usage: number;
preferredDomain: string;
};
export declare type UsageInfo = {
username: string;
usage: number;
email: string;
};
export declare class PatClient {
private baseUrl;
token?: string;
constructor(baseUrl?: string);
files(parent: string | undefined): Promise<File[]>;
upload(file: globalThis.File, parent: string | undefined, onProgress?: (loaded: number, total: number) => void): Promise<File>;
replace(shortName: string, file: globalThis.File, onProgress?: (loaded: number, total: number) => void): Promise<File>;
getDownloadToken(shortName: string, password?: string): Promise<string>;
updateFileSharing(shortName: string, isPrivate: boolean, details: {
ephemeralTimestamp: number | null;
password: string | boolean;
}): Promise<File>;
moveFile(shortName: string, details: {
originalName?: string;
parent?: string | undefined;
}, copy?: boolean): Promise<File>;
getFile(shortName: string): Promise<File>;
deleteFile(shortName: string): Promise<File>;
deleteFolder(id: string): Promise<File>;
folders(parent: string | undefined): Promise<Folder[]>;
createFolder(name: string, parent: string | undefined): Promise<Folder>;
moveFolder(id: string, details: {
name?: string;
parent?: string | undefined;
}): Promise<File>;
getFolder(id: string): Promise<Folder[]>;
checkAuth(): Promise<boolean>;
login(username: string, password: string): Promise<{
sessionToken: string;
expiration: Date;
}>;
resetPassword(nameOrEmail: string): Promise<void>;
completeResetPassword(resetToken: string, newPassword: string, regenerateAccessToken: boolean): Promise<void>;
invalidateSession(): Promise<void>;
regenerateAccessToken(): Promise<string>;
me(): Promise<User>;
setDomain(domain: 'doggo.ninja' | 'ninja.dog'): Promise<User>;
adminUsage(): Promise<UsageInfo[]>;
makeUser(username: string, email: string): Promise<void>;
makeUploadRequest<Type = {}>(method: 'post' | 'put' | 'delete', url: string, file: globalThis.File, onProgress?: (loaded: number, total: number) => void): Promise<Type>;
makeRequest<Type = {}>(method: 'get' | 'post' | 'put' | 'delete', path: string, query?: Record<string, string | undefined>, body?: Record<string, unknown>): Promise<Type>;
}