From a018f01d2af09757f85f4dbedc7fe527dd601b36 Mon Sep 17 00:00:00 2001 From: Filip Znachor Date: Tue, 2 Jul 2024 21:57:40 +0200 Subject: [PATCH] Added domain model, repo improvements --- .npmignore | 2 ++ README.md | 3 +++ package.json | 2 +- src/index.ts | 1 + src/models/Domain.ts | 54 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 .npmignore create mode 100644 README.md create mode 100644 src/models/Domain.ts diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..b394908 --- /dev/null +++ b/.npmignore @@ -0,0 +1,2 @@ +src/ +!lib/** \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..d931d3c --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# oohost.js + +TypeScript library for accessing the oohost API diff --git a/package.json b/package.json index 0e5368f..e85ae8d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "oohost.js", - "version": "0.0.5", + "version": "0.0.6", "description": "TypeScript library for accessing the oohost API", "license": "MIT", "author": "oohost.cz", diff --git a/src/index.ts b/src/index.ts index fb8e408..4219d75 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,4 +2,5 @@ export * from "./API"; export * from "./APIList"; export * from "./models/Base"; export * from "./models/User"; +export * from "./models/Domain"; export * from "./models/Certificate"; diff --git a/src/models/Domain.ts b/src/models/Domain.ts new file mode 100644 index 0000000..40490ec --- /dev/null +++ b/src/models/Domain.ts @@ -0,0 +1,54 @@ +import { API, Response } from "../API"; +import { APIList } from "../APIList"; +import { UserInclude } from "./User"; + +export class Domain { + + public readonly selector: DomainSelector = {}; + + constructor(selector: string) { + let id = parseInt(selector); + if (Number.isInteger(id)) { + this.selector.id = id; + } else { + this.selector.domain = selector; + } + } + + public async getDetails() { + let res = await API.get("domains/details", {...this.selector}); + let details: DomainDetails | null = res.get().details ?? null; + return {details, res}; + } + + public async remove(): Promise { + return await API.get("domains/remove", {...this.selector}); + } + + public static async add(domain: string) { + let res = await API.get("domains/add", {domain}); + let id: number | null = res.success ? res.get().info.id : null; + return {id, res}; + } + + public static getList(): APIList { + return new APIList("domains/list"); + } + +} + +export interface DomainSelector { + id?: number, + domain?: string +} + +export interface DomainListItem { + id: number, + domain: string, + status: number, + created_at: string, + updated_at: string, + User: UserInclude +} + +export type DomainDetails = DomainListItem;