UNPKG

alwaysai

Version:

The alwaysAI command-line interface (CLI)

111 lines 4.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getSystemInfoShadow = exports.updateShadow = exports.getShadow = exports.HttpStatusCode = void 0; //import { CliTerseError } from '@alwaysai/alwayscli'; const device_agent_schemas_1 = require("@alwaysai/device-agent-schemas"); const uuid_1 = require("uuid"); const authentication_client_1 = require("../infrastructure/authentication-client"); const urls_1 = require("../infrastructure/urls"); const _1 = require("./"); var HttpStatusCode; (function (HttpStatusCode) { HttpStatusCode[HttpStatusCode["OK"] = 200] = "OK"; HttpStatusCode[HttpStatusCode["FORBIDDEN"] = 403] = "FORBIDDEN"; })(HttpStatusCode = exports.HttpStatusCode || (exports.HttpStatusCode = {})); const getShadow = async (thingId) => { const idTokenAuthorizationHeader = await (0, authentication_client_1.CliAuthenticationClient)().getIdAuthorizationHeader(); const requestURL = (0, urls_1.serviceEndpointBuilder)('device-shadow', 'GetThingShadow'); const body = { deviceUuid: thingId, shadowName: 'secure-tunnel', txId: (0, uuid_1.v4)() }; _1.logger.debug('getShadow body: ', body); const response = await fetch(requestURL, { method: 'post', body: JSON.stringify(body), headers: Object.assign(Object.assign({}, idTokenAuthorizationHeader), { 'Content-Type': 'application/json' }) }); if (!response) { const errorMsg = 'Error: Receiving response from server'; _1.logger.error(errorMsg); throw new Error(errorMsg); } // if (response.status !== HttpStatusCode.OK) { // const errorMsg = `Error, response.status = ${response.status}`; // logger.error(errorMsg); // throw new Error(errorMsg); // } const readerStream = Buffer.from(await response.arrayBuffer()); const parsedJson = JSON.parse(readerStream.toString()); return parsedJson; }; exports.getShadow = getShadow; const updateShadow = async (thingId, payload) => { const idTokenAuthorizationHeader = await (0, authentication_client_1.CliAuthenticationClient)().getIdAuthorizationHeader(); const requestURL = (0, urls_1.serviceEndpointBuilder)('device-shadow', 'UpdateThingShadow'); const body = { deviceUuid: thingId, shadowName: 'secure-tunnel', txId: (0, uuid_1.v4)(), payload }; _1.logger.debug('updateShadow body: ', body); const response = await fetch(requestURL, { method: 'post', body: JSON.stringify(body), headers: Object.assign(Object.assign({}, idTokenAuthorizationHeader), { 'Content-Type': 'application/json' }) }); if (!response) { const errorMsg = 'Error: Receiving response from server'; _1.logger.error(errorMsg); throw new Error(errorMsg); } if (response.status !== HttpStatusCode.OK) { const errorMsg = `Error, response.status = ${response.status}`; _1.logger.error(errorMsg); throw new Error(errorMsg); } const readerStream = Buffer.from(await response.arrayBuffer()); const parsedJson = JSON.parse(readerStream.toString()); return parsedJson; }; exports.updateShadow = updateShadow; async function getSystemInfoShadow(thingId) { const idTokenAuthorizationHeader = await (0, authentication_client_1.CliAuthenticationClient)().getIdAuthorizationHeader(); const requestURL = (0, urls_1.serviceEndpointBuilder)('device-shadow', 'GetThingShadow'); const body = { deviceUuid: thingId, shadowName: 'system-info', txId: (0, uuid_1.v4)() }; const response = await fetch(requestURL, { method: 'post', body: JSON.stringify(body), headers: Object.assign(Object.assign({}, idTokenAuthorizationHeader), { 'Content-Type': 'application/json' }) }); if (!response) { const errorMsg = 'Error: Receiving response from server'; _1.logger.error(errorMsg); throw new Error(errorMsg); } if (response.status !== HttpStatusCode.OK) { const errorMsg = `Error, response.status = ${response.status}`; _1.logger.error(errorMsg); throw new Error(errorMsg); } const readerStream = Buffer.from(await response.arrayBuffer()); const parsedJson = JSON.parse(readerStream.toString()); const reported = (0, device_agent_schemas_1.getReportedFromMessage)(parsedJson.payload); const valid = (0, device_agent_schemas_1.validateSystemInformationShadowUpdate)(reported); if (!valid) { const errorMsg = 'Invalid system info shadow'; _1.logger.error(errorMsg); _1.logger.error(JSON.stringify(device_agent_schemas_1.validateSystemInformationShadowUpdate.errors)); // FIXME: Skip validation until disk size provided as string issue is fixed //throw new CliTerseError(errorMsg); } return reported; } exports.getSystemInfoShadow = getSystemInfoShadow; //# sourceMappingURL=shadows.js.map