node-red-contrib-home-assistant-websocket
Version:
Node-RED integration with Home Assistant through websocket and REST API
2 lines (1 loc) • 2.59 kB
JavaScript
;var w=Object.create;var p=Object.defineProperty;var $=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var E=Object.getPrototypeOf,P=Object.prototype.hasOwnProperty;var R=(r,t)=>{for(var e in t)p(r,e,{get:t[e],enumerable:!0})},g=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of H(t))!P.call(r,a)&&a!==e&&p(r,a,{get:()=>t[a],enumerable:!(n=$(t,a))||n.enumerable});return r};var h=(r,t,e)=>(e=r!=null?w(E(r)):{},g(t||!r||!r.__esModule?p(e,"default",{value:r,enumerable:!0}):e,r)),j=r=>g(p({},"__esModule",{value:!0}),r);var _={};R(_,{default:()=>y});module.exports=j(_);var m=h(require("axios")),f=h(require("debug")),T=h(require("https")),i=h(require("../common/errors/HomeAssistantError"));const o=(0,f.default)("home-assistant:http");class y{#t;constructor(t){const e={baseURL:`${t.host}/api`,headers:{Authorization:`Bearer ${t.access_token}`}};t.rejectUnauthorizedCerts||(e.httpsAgent=new T.default.Agent({rejectUnauthorized:!1})),this.#t=m.default.create(e)}async getHistory(t,e,n,a=!1){let s="history/period";t&&(s=`${s}/${t}`);const l={};e&&(l.filter_entity_id=e),n&&(l.end_time=n);const c=await this.get(s,l);return a?c.reduce((u,d)=>[...u,...d],[]).sort((u,d)=>u.last_updated<d.last_updated?-1:u.last_updated>d.last_updated?1:0):c}renderTemplate(t){return this.post("template",{template:t},"text")}async post(t,e={},n="json"){o(`HTTP POST: ${this.#t.defaults.baseURL}/${t}`);const a=await this.#t.request({method:"post",url:t,data:e,responseType:n}).catch(s=>{throw o(`POST: request error: ${s.toString()}`),s.response?.data?.message?new i.default(s.response.data):s});return n==="json"?a.data??"":a.data}async get(t,e={},n="json"){o(`HTTP GET: ${this.#t.defaults.baseURL}/${t}`);const a=await this.#t.request({method:"get",url:t,params:e,responseType:n}).catch(s=>{throw o(`GET: request error: ${s.toString()}`),s.response?.data?.message?new i.default(s.response.data):s});return n==="json"?a.data??"":a.data}async put(t,e={},n="json"){o(`HTTP PUT: ${this.#t.defaults.baseURL}/${t}`);const a=await this.#t.request({method:"put",url:t,data:e,responseType:n}).catch(s=>{throw o(`PUT: request error: ${s.toString()}`),s.response?.data?.message?new i.default(s.response.data):s});return n==="json"?a.data??"":a.data}async delete(t,e={},n="json"){o(`HTTP DELETE: ${this.#t.defaults.baseURL}/${t}`);const a=await this.#t.request({method:"delete",url:t,data:e,responseType:n}).catch(s=>{throw o(`DELETE: request error: ${s.toString()}`),s.response?.data?.message?new i.default(s.response.data):s});return n==="json"?a.data??"":a.data}}