Added storages, accesses & websites, other changes
This commit is contained in:
parent
a018f01d2a
commit
bce5611449
9 changed files with 188 additions and 11 deletions
|
@ -1,2 +1,2 @@
|
|||
src/
|
||||
!lib/**
|
||||
!lib/**
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "oohost.js",
|
||||
"version": "0.0.6",
|
||||
"version": "0.0.7",
|
||||
"description": "TypeScript library for accessing the oohost API",
|
||||
"license": "MIT",
|
||||
"author": "oohost.cz",
|
||||
|
|
|
@ -64,7 +64,7 @@ export class Response {
|
|||
}
|
||||
|
||||
/**
|
||||
* Get Reponse meta keys
|
||||
* Get Response meta keys
|
||||
* @returns meta keys
|
||||
*/
|
||||
getMeta() {
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
export * from "./API";
|
||||
export * from "./APIList";
|
||||
export * from "./models/Base";
|
||||
export * from "./models/User";
|
||||
export * from "./models/Domain";
|
||||
export * from "./models/Storage";
|
||||
export * from "./models/StorageAccess";
|
||||
export * from "./models/Certificate";
|
||||
export * from "./models/Website";
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
import { Response } from "../API";
|
||||
|
||||
export type PromisedData<T> = Promise<Data<T>>;
|
||||
export type Data<T> = [T | null, Response.ExtendedError[]];
|
|
@ -55,15 +55,21 @@ export interface CertificateEdit extends Partial<CertificateData> {
|
|||
name?: string
|
||||
}
|
||||
|
||||
export interface CertificateListItem {
|
||||
export interface CertificateInclude {
|
||||
id: number,
|
||||
name: string,
|
||||
domain: string,
|
||||
domain: string
|
||||
}
|
||||
|
||||
export interface CertificateExtendedInclude extends CertificateInclude {
|
||||
auto_renew: boolean,
|
||||
expiration_date: string,
|
||||
created_at: string,
|
||||
updated_at: string,
|
||||
user_id: number,
|
||||
user_id: number
|
||||
}
|
||||
|
||||
export interface CertificateListItem extends CertificateExtendedInclude {
|
||||
User: UserInclude
|
||||
}
|
||||
|
||||
|
|
59
src/models/Storage.ts
Normal file
59
src/models/Storage.ts
Normal file
|
@ -0,0 +1,59 @@
|
|||
import { API, Response } from "../API";
|
||||
import { APIList } from "../APIList";
|
||||
import { UserInclude } from "./User";
|
||||
|
||||
export class Storage {
|
||||
|
||||
public readonly id: number;
|
||||
|
||||
constructor(id: number) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public async getDetails() {
|
||||
let res = await API.get("storages/details", {id: this.id});
|
||||
let details: StorageDetails | null = res.get().details ?? null;
|
||||
return {details, res};
|
||||
}
|
||||
|
||||
public async remove(): Promise<Response> {
|
||||
return await API.get("storages/remove", {id: this.id});
|
||||
}
|
||||
|
||||
public async edit(data: StorageEdit): Promise<Response> {
|
||||
return await API.get("storages/edit", {id: this.id, ...data});
|
||||
}
|
||||
|
||||
public static async add(name: string, size: number, server: string) {
|
||||
let res = await API.get("storages/add", {name, size, server});
|
||||
let id: number | null = res.success ? res.get().info.id : null;
|
||||
return {id, res};
|
||||
}
|
||||
|
||||
public static getList(): APIList<StorageListItem> {
|
||||
return new APIList("storages/list");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export interface StorageEdit {
|
||||
name?: string
|
||||
}
|
||||
|
||||
export interface StorageInclude {
|
||||
id: number,
|
||||
name: string,
|
||||
status: number,
|
||||
size: number,
|
||||
max_size: number,
|
||||
server_id: string,
|
||||
}
|
||||
|
||||
export interface StorageListItem extends StorageInclude {
|
||||
created_at: string,
|
||||
updated_at: string,
|
||||
user_id: number,
|
||||
User: UserInclude
|
||||
}
|
||||
|
||||
export type StorageDetails = StorageListItem;
|
49
src/models/StorageAccess.ts
Normal file
49
src/models/StorageAccess.ts
Normal file
|
@ -0,0 +1,49 @@
|
|||
import { API, Response } from "../API";
|
||||
import { APIList } from "../APIList";
|
||||
import { StorageInclude } from "./Storage";
|
||||
import { UserInclude } from "./User";
|
||||
|
||||
export class StorageAccess {
|
||||
|
||||
public readonly id: number;
|
||||
|
||||
constructor(id: number) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public async getDetails() {
|
||||
let res = await API.get("webdav/details", {id: this.id});
|
||||
let details: StorageAccessDetails | null = res.get().details ?? null;
|
||||
return {details, res};
|
||||
}
|
||||
|
||||
public async remove(): Promise<Response> {
|
||||
return await API.get("webdav/remove", {id: this.id});
|
||||
}
|
||||
|
||||
public static async add(username: string, password: string, storage_id: number, path: string = "/") {
|
||||
let res = await API.get("webdav/add", {username, password, storage_id, path});
|
||||
let id: number | null = res.success ? res.get().info.id : null;
|
||||
return {id, res};
|
||||
}
|
||||
|
||||
public static getList(): APIList<StorageAccessListItem> {
|
||||
return new APIList("webdav/list");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export interface StorageAccessListItem {
|
||||
id: number,
|
||||
username: string,
|
||||
server_id: string,
|
||||
storage_id: number,
|
||||
path: string
|
||||
created_at: string,
|
||||
updated_at: string,
|
||||
user_id: number,
|
||||
User: UserInclude,
|
||||
Storage: StorageInclude
|
||||
}
|
||||
|
||||
export type StorageAccessDetails = StorageAccessListItem;
|
65
src/models/Website.ts
Normal file
65
src/models/Website.ts
Normal file
|
@ -0,0 +1,65 @@
|
|||
import { API, Response } from "../API";
|
||||
import { APIList } from "../APIList";
|
||||
import { CertificateExtendedInclude } from "./Certificate";
|
||||
import { StorageInclude } from "./Storage";
|
||||
import { UserInclude } from "./User";
|
||||
|
||||
export class Website {
|
||||
|
||||
public readonly id: number;
|
||||
|
||||
constructor(id: number) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public async getDetails() {
|
||||
let res = await API.get("websites/details", {id: this.id});
|
||||
let details: WebsiteDetails | null = res.get().details ?? null;
|
||||
return {details, res};
|
||||
}
|
||||
|
||||
public async remove(): Promise<Response> {
|
||||
return await API.get("websites/remove", {id: this.id});
|
||||
}
|
||||
|
||||
public async edit(data: WebsiteEdit): Promise<Response> {
|
||||
return await API.get("websites/edit", {id: this.id, ...data});
|
||||
}
|
||||
|
||||
public static async add(name: string) {
|
||||
let res = await API.get("websites/add", {name});
|
||||
let id: number | null = res.success ? res.get().info.id : null;
|
||||
return {id, res};
|
||||
}
|
||||
|
||||
public static getList(): APIList<WebsiteListItem> {
|
||||
return new APIList("websites/list");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export interface WebsiteEdit {
|
||||
name?: string,
|
||||
storage_id?: number,
|
||||
root?: string,
|
||||
domain?: string,
|
||||
cert_id?: number,
|
||||
enabled?: boolean
|
||||
}
|
||||
|
||||
export interface WebsiteListItem {
|
||||
id: number,
|
||||
name: string,
|
||||
status: number,
|
||||
domain: string,
|
||||
root: string,
|
||||
server_id: string,
|
||||
created_at: string,
|
||||
updated_at: string,
|
||||
user_id: number,
|
||||
User: UserInclude,
|
||||
Storage: StorageInclude | null,
|
||||
Certificate: CertificateExtendedInclude | null
|
||||
}
|
||||
|
||||
export type WebsiteDetails = WebsiteListItem;
|
Loading…
Reference in a new issue