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/
|
src/
|
||||||
!lib/**
|
!lib/**
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "oohost.js",
|
"name": "oohost.js",
|
||||||
"version": "0.0.6",
|
"version": "0.0.7",
|
||||||
"description": "TypeScript library for accessing the oohost API",
|
"description": "TypeScript library for accessing the oohost API",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"author": "oohost.cz",
|
"author": "oohost.cz",
|
||||||
|
|
|
@ -64,7 +64,7 @@ export class Response {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Reponse meta keys
|
* Get Response meta keys
|
||||||
* @returns meta keys
|
* @returns meta keys
|
||||||
*/
|
*/
|
||||||
getMeta() {
|
getMeta() {
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
export * from "./API";
|
export * from "./API";
|
||||||
export * from "./APIList";
|
export * from "./APIList";
|
||||||
export * from "./models/Base";
|
|
||||||
export * from "./models/User";
|
export * from "./models/User";
|
||||||
export * from "./models/Domain";
|
export * from "./models/Domain";
|
||||||
|
export * from "./models/Storage";
|
||||||
|
export * from "./models/StorageAccess";
|
||||||
export * from "./models/Certificate";
|
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
|
name?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface CertificateListItem {
|
export interface CertificateInclude {
|
||||||
id: number,
|
id: number,
|
||||||
name: string,
|
name: string,
|
||||||
domain: string,
|
domain: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CertificateExtendedInclude extends CertificateInclude {
|
||||||
auto_renew: boolean,
|
auto_renew: boolean,
|
||||||
expiration_date: string,
|
expiration_date: string,
|
||||||
created_at: string,
|
created_at: string,
|
||||||
updated_at: string,
|
updated_at: string,
|
||||||
user_id: number,
|
user_id: number
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CertificateListItem extends CertificateExtendedInclude {
|
||||||
User: UserInclude
|
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