alwaysai
Version:
The alwaysAI command-line interface (CLI)
111 lines • 4.98 kB
JavaScript
;
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