alwaysai
Version:
The alwaysAI command-line interface (CLI)
184 lines • 10.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchAnalyticsPipelinesForOrg = exports.createAnalyticsPipeline = exports.getDeviceByUuid = exports.fetchAppReleaseHistory = exports.getReleaseURL = exports.insertAppRecord = exports.usePresignedUrlAppUpload = exports.getPresignedUrlAppUpload = exports.refreshDevice = exports.addDevice = void 0;
const alwayscli_1 = require("@alwaysai/alwayscli");
const constants_1 = require("../constants");
const urls_1 = require("../infrastructure/urls");
const util_1 = require("../util");
const authentication_client_1 = require("./authentication-client");
const urls_2 = require("./urls");
async function addDevice(device, deviceMode) {
const { getIdAuthorizationHeader } = (0, authentication_client_1.CliAuthenticationClient)();
const idTokenAuthorizationHeader = await getIdAuthorizationHeader();
const requestURL = `${(0, urls_2.getRestURL)()}/createDeviceIot`;
const response = await fetch(requestURL, {
method: 'post',
body: JSON.stringify(Object.assign(Object.assign({}, device), { deviceMode })),
headers: Object.assign(Object.assign({}, idTokenAuthorizationHeader), { 'Content-Type': 'application/json' })
});
if (response.status !== 200) {
util_1.logger.error(`addDevice: ${response.statusText}`);
throw new alwayscli_1.CliTerseError(`addDevice: ${response.statusText}. ${constants_1.PLEASE_REPORT_THIS_ERROR_MESSAGE}`);
}
const readerStream = Buffer.from(await response.arrayBuffer());
const parsedJSon = JSON.parse(readerStream.toString());
return parsedJSon;
}
exports.addDevice = addDevice;
async function refreshDevice(deviceId) {
const { getIdAuthorizationHeader } = (0, authentication_client_1.CliAuthenticationClient)();
const idTokenAuthorizationHeader = await getIdAuthorizationHeader();
const requestURL = `${(0, urls_2.getRestURL)()}/refreshDevice`;
const response = await fetch(requestURL, {
method: 'post',
body: JSON.stringify({ deviceId }),
headers: Object.assign(Object.assign({}, idTokenAuthorizationHeader), { 'Content-Type': 'application/json' })
});
if (response.status !== 200) {
util_1.logger.error(`refreshDevice: ${response.statusText}`);
throw new alwayscli_1.CliTerseError(`refreshDevice: ${response.statusText}. ${constants_1.PLEASE_REPORT_THIS_ERROR_MESSAGE}`);
}
const readerStream = Buffer.from(await response.arrayBuffer());
const parsedJSon = JSON.parse(readerStream.toString());
return parsedJSon;
}
exports.refreshDevice = refreshDevice;
async function getPresignedUrlAppUpload(fileName, fileType) {
const { getIdAuthorizationHeader } = (0, authentication_client_1.CliAuthenticationClient)();
const idTokenAuthorizationHeader = await getIdAuthorizationHeader();
const requestURL = (0, urls_1.serviceEndpointBuilder)('remote-deployment', 'presigned-url-app-upload');
const response = await fetch(requestURL, {
method: 'post',
body: JSON.stringify({ fileName, fileType }),
headers: Object.assign(Object.assign({}, idTokenAuthorizationHeader), { 'Content-Type': 'application/json' })
});
if (response.status !== 200) {
util_1.logger.error(`get-presigned-url-app-upload: ${response.statusText}`);
throw new alwayscli_1.CliTerseError(`get-presigned-url-app-upload: ${response.statusText}. ${constants_1.PLEASE_REPORT_THIS_ERROR_MESSAGE}`);
}
const readerStream = Buffer.from(await response.arrayBuffer());
const parsedJSon = JSON.parse(readerStream.toString());
return parsedJSon;
}
exports.getPresignedUrlAppUpload = getPresignedUrlAppUpload;
async function usePresignedUrlAppUpload(presignedUrl, fileStream) {
try {
const response = await fetch(presignedUrl, {
method: 'PUT',
body: fileStream,
headers: {
'Content-Type': 'application/octet-stream'
}
});
if (response.status !== 200) {
util_1.logger.error(`use-presigned-url-app-upload: ${response.statusText}`);
throw new alwayscli_1.CliTerseError(`use-presigned-url-app-upload: ${response.statusText}. ${constants_1.PLEASE_REPORT_THIS_ERROR_MESSAGE}`);
}
}
catch (error) {
util_1.logger.error((0, util_1.stringifyError)(error));
throw new alwayscli_1.CliTerseError(`app-upload: ${(0, util_1.stringifyError)(error)} ${constants_1.PLEASE_REPORT_THIS_ERROR_MESSAGE}`);
}
}
exports.usePresignedUrlAppUpload = usePresignedUrlAppUpload;
async function insertAppRecord(record) {
const { getIdAuthorizationHeader } = (0, authentication_client_1.CliAuthenticationClient)();
const idTokenAuthorizationHeader = await getIdAuthorizationHeader();
const response = await fetch((0, urls_1.serviceEndpointBuilder)('remote-deployment', 'create-application-release'), {
method: 'post',
body: JSON.stringify(Object.assign({}, record)),
headers: Object.assign(Object.assign({}, idTokenAuthorizationHeader), { 'Content-Type': 'application/json' })
});
const readerStream = Buffer.from(await response.arrayBuffer());
const jsonStr = readerStream.toString();
if (response.status !== 200) {
util_1.logger.error(`insertAppRecord: ${jsonStr}`);
throw new alwayscli_1.CliTerseError(`insertAppRecord: ${jsonStr}. ${constants_1.PLEASE_REPORT_THIS_ERROR_MESSAGE}`);
}
}
exports.insertAppRecord = insertAppRecord;
async function getReleaseURL(projectId, releaseHash) {
const { getIdAuthorizationHeader } = (0, authentication_client_1.CliAuthenticationClient)();
const idTokenAuthorizationHeader = await getIdAuthorizationHeader();
const requestURL = (0, urls_1.serviceEndpointBuilder)('remote-deployment', 'get-presigned-app-url');
const response = await fetch(requestURL, {
method: 'post',
body: JSON.stringify({ projectId, releaseHash }),
headers: Object.assign(Object.assign({}, idTokenAuthorizationHeader), { 'Content-Type': 'application/json' })
});
if (response.status !== 200) {
util_1.logger.error(`getReleaseUrl: ${response.statusText}`);
throw new alwayscli_1.CliTerseError(`getReleaseUrl: ${response.statusText}. ${constants_1.PLEASE_REPORT_THIS_ERROR_MESSAGE}`);
}
const readerStream = Buffer.from(await response.arrayBuffer());
const parsedJSon = JSON.parse(readerStream.toString());
return parsedJSon;
}
exports.getReleaseURL = getReleaseURL;
async function fetchAppReleaseHistory(projectUuid) {
const { getIdAuthorizationHeader } = (0, authentication_client_1.CliAuthenticationClient)();
const idTokenAuthorizationHeader = await getIdAuthorizationHeader();
const requestURL = (0, urls_1.serviceEndpointBuilder)('remote-deployment', 'get-app-release-history');
const response = await fetch(requestURL, {
method: 'post',
body: JSON.stringify({ projectUuid }),
headers: Object.assign(Object.assign({}, idTokenAuthorizationHeader), { 'Content-Type': 'application/json' })
});
if (response.status !== 200) {
util_1.logger.error(`fetchAppReleaseHistory: ${response.statusText}`);
throw new alwayscli_1.CliTerseError(`fetchAppReleaseHistory: ${response.statusText}. ${constants_1.PLEASE_REPORT_THIS_ERROR_MESSAGE}`);
}
const readerStream = Buffer.from(await response.arrayBuffer());
const parsedJSon = JSON.parse(readerStream.toString());
return parsedJSon;
}
exports.fetchAppReleaseHistory = fetchAppReleaseHistory;
async function getDeviceByUuid({ uuid }) {
const { getIdAuthorizationHeader } = (0, authentication_client_1.CliAuthenticationClient)();
const idTokenAuthorizationHeader = await getIdAuthorizationHeader();
const requestURL = (0, urls_1.serviceEndpointBuilder)('devices', 'get-device-by-uuid');
const response = await fetch(requestURL, {
method: 'post',
body: JSON.stringify({ uuid }),
headers: Object.assign(Object.assign({}, idTokenAuthorizationHeader), { 'Content-Type': 'application/json' })
});
if (response.status !== 200) {
util_1.logger.error(`get-device-by-uuid: ${response.statusText}`);
throw new alwayscli_1.CliTerseError(`get-device-by-uuid: ${response.statusText}. ${constants_1.PLEASE_REPORT_THIS_ERROR_MESSAGE}`);
}
const readerStream = Buffer.from(await response.arrayBuffer());
const parsedJson = JSON.parse(readerStream.toString());
return parsedJson;
}
exports.getDeviceByUuid = getDeviceByUuid;
async function createAnalyticsPipeline(pipelineName, idTokenAuthorizationHeader) {
const response = await fetch((0, urls_1.serviceEndpointBuilder)('aai-analytics', 'createAnalyticsPipeline'), {
method: 'POST',
body: JSON.stringify({
name: pipelineName
}),
headers: Object.assign(Object.assign({}, idTokenAuthorizationHeader), { 'Content-Type': 'application/json' })
});
if (response.status !== 200) {
util_1.logger.error(`createPipeline failed: ${response.statusText}`);
throw new alwayscli_1.CliTerseError(`createPipeline failed: ${response.statusText}`);
}
const pipeline = (await response.json());
return pipeline;
}
exports.createAnalyticsPipeline = createAnalyticsPipeline;
async function fetchAnalyticsPipelinesForOrg(idTokenAuthorizationHeader) {
const response = await fetch((0, urls_1.serviceEndpointBuilder)('aai-analytics', 'getAnalyticsChannelIdsForOrganization'), {
method: 'POST',
body: JSON.stringify({}),
headers: Object.assign(Object.assign({}, idTokenAuthorizationHeader), { 'Content-Type': 'application/json' })
});
if (response.status !== 200) {
util_1.logger.error(`fetchPipelinesForOrg failed: ${response.statusText}`);
throw new alwayscli_1.CliTerseError(`fetchPipelinesForOrg failed: ${response.statusText}`);
}
const orgPipelines = (await response.json());
return orgPipelines;
}
exports.fetchAnalyticsPipelinesForOrg = fetchAnalyticsPipelinesForOrg;
//# sourceMappingURL=rest-client.js.map