@constructorfleet/ultimate-govee
Version:
Library for interacting with Govee devices written in Typescript.
101 lines • 4.96 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 GoveeDiyService_1;
Object.defineProperty(exports, "__esModule", { value: true });
exports.GoveeDiyService = void 0;
const common_1 = require("@nestjs/common");
const _ultimate_govee_common_1 = require("../../../common");
const _ultimate_govee_persist_1 = require("../../../persist");
const utils_1 = require("../../utils");
const govee_diy_config_1 = require("./govee-diy.config");
const one_click_component_response_1 = require("./models/bff/one-click-component.response");
const tap_to_run_response_1 = require("./models/bff/tap-to-run.response");
const diy_group_response_1 = require("./models/diy-group.response");
let GoveeDiyService = GoveeDiyService_1 = class GoveeDiyService {
constructor(config) {
this.config = config;
this.logger = new common_1.Logger(GoveeDiyService_1.name);
}
async getOneClicks(authState) {
if (authState.bffAuth === undefined) {
this.logger.error('Unable to retrieve One-Click actions: not authenticated');
throw new _ultimate_govee_common_1.GoveeError('Not Authenticated');
}
try {
const response = await (0, utils_1.request)(this.config.oneClicksUrl, this.config.headers(authState.bffAuth.oauth)).get(tap_to_run_response_1.TapToRunResponse);
const ttrResponse = response.data;
return ttrResponse.componentData.components
.filter((comp) => comp instanceof one_click_component_response_1.OneClickComponent)
.map((comp) => comp.oneClicks)
.flat();
}
catch (error) {
this.logger.error('Error retrieving OneClicks from Govee', error);
throw new _ultimate_govee_common_1.GoveeCommunityApiError('Error retrieving OneClicks');
}
}
async getDiyEffects(authState, model, goodsType, deviceId) {
if (authState.bffAuth === undefined) {
this.logger.error(`Unable to retrieve DIY Effects for ${deviceId}: not authenticated`);
throw new _ultimate_govee_common_1.GoveeError('Not Authenticated');
}
try {
const response = await (0, utils_1.request)(this.config.deviceDiyUrl, (0, utils_1.goveeAuthenticatedHeaders)(authState.bffAuth.oauth), {
sku: model,
goodsType,
device: deviceId,
}).get(diy_group_response_1.DIYGroupResponse);
return response.data.diyData.diyGroups.reduce((effects, group) => {
group.diys
.map((diy) => ({
name: diy.name,
code: diy.code,
type: diy.effectType,
cmdVersion: 0,
diyOpCodeBase64: diy.diyOpCodeBase64,
}))
.forEach((effect) => effects.push(effect));
return effects;
}, []);
}
catch (error) {
this.logger.error('Unable to retrieve device diys', error);
return [];
}
}
};
exports.GoveeDiyService = GoveeDiyService;
__decorate([
(0, _ultimate_govee_persist_1.PersistResult)({
filename: 'govee.one-clicks.json',
}),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", Promise)
], GoveeDiyService.prototype, "getOneClicks", null);
__decorate([
(0, _ultimate_govee_persist_1.PersistResult)({
filename: 'govee.{3}.diys.json',
// transform: (data) => instanceToPlain(data),
}),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object, String, Number, String]),
__metadata("design:returntype", Promise)
], GoveeDiyService.prototype, "getDiyEffects", null);
exports.GoveeDiyService = GoveeDiyService = GoveeDiyService_1 = __decorate([
(0, common_1.Injectable)(),
__param(0, (0, common_1.Inject)(govee_diy_config_1.GoveeDiyConfig.KEY)),
__metadata("design:paramtypes", [void 0])
], GoveeDiyService);
//# sourceMappingURL=govee-diy.service.js.map