diff --git a/ccm-core-apiclient/src/main/typescript/ccm-core-apiclient.ts b/ccm-core-apiclient/src/main/typescript/ccm-core-apiclient.ts index 41bbafea8..39639dc77 100644 --- a/ccm-core-apiclient/src/main/typescript/ccm-core-apiclient.ts +++ b/ccm-core-apiclient/src/main/typescript/ccm-core-apiclient.ts @@ -1,3 +1,4 @@ import { CategorizationApiClient } from "./clients/categorization-api"; +import { SystemInformationClient } from "./clients/systeminformation-api"; -export { CategorizationApiClient }; +export { CategorizationApiClient, SystemInformationClient }; diff --git a/ccm-core-apiclient/src/main/typescript/clients/systeminformation-api.ts b/ccm-core-apiclient/src/main/typescript/clients/systeminformation-api.ts new file mode 100644 index 000000000..a99cf1699 --- /dev/null +++ b/ccm-core-apiclient/src/main/typescript/clients/systeminformation-api.ts @@ -0,0 +1,33 @@ +import { + ApiResponse, + LibreCcmApiClient, +} from "@libreccm/ccm-apiclient-commons"; + +import * as Constants from "../constants"; + +export class SystemInformationClient { + #apiClient: LibreCcmApiClient; + + readonly #SYSINFO_API_PREFIX = `${Constants.ADMIN_API_PREFIX}/systeminformation`; + + constructor(apiClient: LibreCcmApiClient) { + this.#apiClient = apiClient; + } + + async getSystemInformation(): Promise> { + try { + const response: ApiResponse = await this.#apiClient.get( + this.#SYSINFO_API_PREFIX + ); + + if (response.ok) { + return (await response.json()) as Record; + } else { + throw `Failed get system information: + ${response.status} ${response.statusText}`; + } + } catch (err) { + throw `Failed to get system information: ${err}`; + } + } +}