UNPKG

node-red-contrib-home-assistant-websocket

Version:
2 lines (1 loc) 2.54 kB
"use strict";var b=Object.create;var u=Object.defineProperty;var N=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var P=Object.getPrototypeOf,C=Object.prototype.hasOwnProperty;var O=(o,e)=>{for(var t in e)u(o,t,{get:e[t],enumerable:!0})},f=(o,e,t,p)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of S(e))!C.call(o,r)&&r!==t&&u(o,r,{get:()=>e[r],enumerable:!(p=N(e,r))||p.enumerable});return o};var s=(o,e,t)=>(t=o!=null?b(P(o)):{},f(e||!o||!o.__esModule?u(t,"default",{value:o,enumerable:!0}):t,o)),k=o=>f(u({},"__esModule",{value:!0}),o);var I={};O(I,{default:()=>T});module.exports=k(I);var v=s(require("../../common/controllers/InputOutputController")),l=s(require("../../common/errors/InputError")),d=s(require("../../common/errors/NoConnectionError")),w=require("../../common/services/InputService"),A=require("../../const"),y=require("../../helpers/mustache"),a=require("./const");class T extends v.default{async onInput({message:e,parsedMessage:t,send:p,done:r}){if(!this.homeAssistant.websocket.isConnected)throw new d.default;const c=(0,y.generateRenderTemplate)(e,this.node.context(),this.homeAssistant.websocket.getStates());let i;t.data.source===w.DataSource.Message?i=t.data.value:t.data.value?.length>0&&(t.dataType.value===A.TypedInputTypes.JSONata?i=await this.jsonataService.evaluate(t.data.value,{message:e}):i=JSON.parse(c(typeof t.data.value=="object"?JSON.stringify(t.data.value):t.data.value)));let n;if(t.protocol.value===a.ApiProtocol.Http){const h=c(t.path.value).replace(/^\/(?:api\/)?/,"");if(!h)throw new l.default("ha-api.error.requires_path");if(!Object.values(a.ApiMethod).includes(t.method.value))throw new l.default(["ha-api.error.invalid_method",{method:t.method.value}]);const m=t.method.value;switch(this.debugToClient({method:m,path:h,data:i}),m){case a.ApiMethod.Get:n=await this.homeAssistant.http.get(h,i,t.responseType.value);break;case a.ApiMethod.Post:n=await this.homeAssistant.http.post(h,i,t.responseType.value);break;case a.ApiMethod.Put:n=await this.homeAssistant.http.put(h,i,t.responseType.value);break;case a.ApiMethod.Delete:n=await this.homeAssistant.http.delete(h,i,t.responseType.value)}}else{if(!("type"in i))throw new l.default("ha-api.error.requires_type");this.debugToClient(JSON.stringify(i)),this.status.setSending(),n=await this.homeAssistant.websocket.send(i)}await this.setCustomOutputs(t.outputProperties.value,e,{results:n,config:this.node.config}),this.status.setSuccess(["ha-api.status.method_called",{method:t.protocol.value}]),p(e),r()}}