@constructorfleet/ultimate-govee
Version:
Library for interacting with Govee devices written in Typescript.
82 lines • 2.84 kB
JavaScript
;
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