UNPKG

@constructorfleet/ultimate-govee

Version:

Library for interacting with Govee devices written in Typescript.

82 lines 2.84 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.request = exports.Request = exports.BaseResponse = exports.BaseRequest = exports.ApiError = void 0; const axios_1 = __importDefault(require("axios")); const class_transformer_1 = require("class-transformer"); const promises_1 = require("fs/promises"); const json_stringify_safe_1 = __importDefault(require("json-stringify-safe")); class ApiError extends Error { constructor(message, status) { super(message); this.status = status; } } exports.ApiError = ApiError; class BaseRequest { constructor() { } } exports.BaseRequest = BaseRequest; class BaseResponse { constructor() { } } exports.BaseResponse = BaseResponse; class Request { constructor(url, headers, payload = undefined) { this.url = url; this.headers = headers; this.payload = payload; } async get(as, saveToFile = undefined) { delete this.headers['Content-Type']; const res = await axios_1.default.get(this.url, { timeout: 10000, headers: this.headers, params: this.payload, }); if (res.status !== 200) { throw new ApiError(res.statusText, { message: res.statusText, statusCode: res.status, }); } if (saveToFile) { await (0, promises_1.writeFile)(saveToFile, (0, json_stringify_safe_1.default)(res.data, null, 2), { encoding: 'utf-8', }); } if (as !== undefined) { res.data = (0, class_transformer_1.plainToInstance)(as, res.data); } return res; } async post(as, saveToFile = undefined) { const res = await axios_1.default.post(this.url, this.payload, { timeout: 10000, headers: this.headers, }); if (res.status !== 200 || res.data.status !== 200) { throw new ApiError(res.data?.message ?? 'Unexpected Error', { message: res.data.message ?? 'Unexpected Error', statusCode: res.data.status, }); } if (saveToFile) { await (0, promises_1.writeFile)(saveToFile, (0, json_stringify_safe_1.default)(res.data, null, 2), { encoding: 'utf-8', }); } if (as !== undefined) { res.data = (0, class_transformer_1.plainToInstance)(as, res.data); } return res; } } exports.Request = Request; function request(url, headers, payload = undefined) { return new Request(url, headers, payload); } exports.request = request; //# sourceMappingURL=request.util.js.map