@constructorfleet/ultimate-govee
Version:
Library for interacting with Govee devices written in Typescript.
98 lines • 4.37 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
var DeviceController_1;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DeviceController = void 0;
const common_1 = require("@nestjs/common");
const devices_service_1 = require("./devices.service");
let DeviceController = DeviceController_1 = class DeviceController {
constructor(deviceService) {
this.deviceService = deviceService;
this.logger = new common_1.Logger(DeviceController_1.name);
}
async getAllDevices() {
const deviceIds = this.deviceService.getDeviceIds();
const devices = deviceIds
.map((id) => this.deviceService.getDevice(id))
.map((device) => device?.loggableState(device.id));
return await Promise.all(devices);
}
async getByModel(model) {
const devices = this.deviceService.getByModel(model);
return await Promise.all(devices.map((device) => device.loggableState(device.id)));
}
getDevice(deviceId, stateName) {
const device = this.deviceService.getDevice(deviceId);
if (!device || !stateName) {
return device?.loggableState(deviceId);
}
return device.state(stateName)?.value;
}
refreshDevice(deviceId) {
this.deviceService.getDevice(deviceId)?.refresh();
}
setState(deviceId, stateName, stateData) {
const device = this.deviceService.getDevice(deviceId)?.debug(true);
const state = device?.state(stateName);
const commandId = state?.setState(stateData);
device?.debug(true);
if (!commandId) {
return common_1.HttpStatus.NOT_FOUND;
}
return { commandId };
}
};
exports.DeviceController = DeviceController;
__decorate([
(0, common_1.Get)(),
__metadata("design:type", Function),
__metadata("design:paramtypes", []),
__metadata("design:returntype", Promise)
], DeviceController.prototype, "getAllDevices", null);
__decorate([
(0, common_1.Get)('model/:model'),
__param(0, (0, common_1.Param)('model')),
__metadata("design:type", Function),
__metadata("design:paramtypes", [String]),
__metadata("design:returntype", Promise)
], DeviceController.prototype, "getByModel", null);
__decorate([
(0, common_1.Get)(':id'),
__param(0, (0, common_1.Param)('id')),
__param(1, (0, common_1.Query)('state')),
__metadata("design:type", Function),
__metadata("design:paramtypes", [String, String]),
__metadata("design:returntype", void 0)
], DeviceController.prototype, "getDevice", null);
__decorate([
(0, common_1.Post)(':id/refresh'),
__param(0, (0, common_1.Param)('id')),
__metadata("design:type", Function),
__metadata("design:paramtypes", [String]),
__metadata("design:returntype", void 0)
], DeviceController.prototype, "refreshDevice", null);
__decorate([
(0, common_1.Post)(':id/:stateName'),
__param(0, (0, common_1.Param)('id')),
__param(1, (0, common_1.Param)('stateName')),
__param(2, (0, common_1.Body)('state')),
__metadata("design:type", Function),
__metadata("design:paramtypes", [String, String, Object]),
__metadata("design:returntype", void 0)
], DeviceController.prototype, "setState", null);
exports.DeviceController = DeviceController = DeviceController_1 = __decorate([
(0, common_1.Controller)('devices'),
__metadata("design:paramtypes", [devices_service_1.DevicesService])
], DeviceController);
//# sourceMappingURL=device.controller.js.map