UNPKG

unomi-sdk-node

Version:

Node module to interact with unomi.

141 lines (140 loc) 6.28 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.profileCount = exports.deleteSegment = exports.update = exports.create = exports.get = exports.getAll = void 0; const connection_1 = require("../utils/connection"); const validation_1 = require("../utils/validation"); function resolveReformatSegment(url, headers) { return __awaiter(this, void 0, void 0, function* () { const callObjectPromise = yield connection_1.callUnomi("GET", url, null, headers, 200); // get segment if (callObjectPromise.statusCode === 200) { // if call success return new Promise((resolve, reject) => { resolve(validation_1.reformatSegment(callObjectPromise, callObjectPromise.responseData)); // format segment and return object that needs to be resolved }); } else { // call not success return new Promise((resolve, reject) => { resolve(callObjectPromise); // object that needs to be resolved }); } }); } /** * @function getAll * @param {string} baseUrl * @param {Record<string, string>} headers * @param {string} sortOrder * @param {number} limit * @param {number} offset * @returns {FilteredResponse} */ function getAll(baseUrl, headers, sortOrder, limit, offset) { const url = baseUrl + `/cxs/segments?size=${limit}&offset=${offset}&sort=${sortOrder}`; // segment endpoint return connection_1.callUnomi("GET", url, null, headers, 200); // return result object } exports.getAll = getAll; /** * @function get * @param {string} baseUrl * @param {Record<string, string>} headers * @param {string} segmentId * @returns {FilteredResponse} */ function get(baseUrl, headers, segmentId) { const url = baseUrl + `/cxs/segments/${segmentId}`; // segment endpoint return resolveReformatSegment(url, headers); // return formatted segment } exports.get = get; /** * @function create * @param {string} baseUrl * @param {Record<string, string>} headers * @param {object} properties * @returns {FilteredResponse} */ function create(baseUrl, headers, params) { const url = baseUrl + `/cxs/segments`; // segment endpoint const validatedSegmentObject = validation_1.validateSegmentObject(params, false); // validate given segment if (validatedSegmentObject.areSubConditionsValid) { // check if subconditions are valid return connection_1.callUnomi("POST", url, validatedSegmentObject.segmentObject, headers, 204); // return result object } else { // subconditions are not valid return connection_1.callUnomi("POST", url, validatedSegmentObject.segmentObject, headers, 204, validatedSegmentObject.errors); // return result object } } exports.create = create; /** * @function update * @param {string} baseUrl * @param {Record<string, string>} headers * @param {object} properties * @returns {FilteredResponse} */ function update(baseUrl, headers, params) { const url = baseUrl + `/cxs/segments`; // segment endpoint const validatedSegmentObject = validation_1.validateSegmentObject(params, true); // validate given segment if (validatedSegmentObject.areSubConditionsValid) { // check if subconditions are valid return connection_1.callUnomi("POST", url, validatedSegmentObject.segmentObject, headers, 204); // return result object } else { // subconditions are not valid return connection_1.callUnomi("POST", url, validatedSegmentObject.segmentObject, headers, 204, validatedSegmentObject.errors); // return result object } } exports.update = update; /** * @function delete * @param {string} baseUrl * @param {Record<string, string>} headers * @param {string} segmentId * @returns {FilteredResponse} */ function deleteSegment(baseUrl, headers, segmentId) { const url = baseUrl + `/cxs/segments/${segmentId}`; // segment endpoint return connection_1.callUnomi("DELETE", url, null, headers, 200); // return result object } exports.deleteSegment = deleteSegment; /** * @function count * @param {string} baseUrl * @param {Record<string, string>} headers * @param {SegmentProfileCountProperties} params * @returns {FilteredResponse} */ function profileCount(baseUrl, headers, params) { const url = baseUrl + `/context-profile/_count`; // profile endpoint const validatedParams = validation_1.validateSegmentCountObject(params); if (validatedParams.isValid) { // check if segments and operator are valid var query = ""; let segments = validatedParams.segments; // get the validated segments let operator = validatedParams.operator; // get the validated operator let queryOperator = " " + operator + " "; for (let index in segments) { // for every segment if (query != "") { // for every segment, except for the first one query += queryOperator; // add the query operator (usually either " AND " or " OR ") } query += segments[index]; // add the segment uuid } // create the body for the api call let body = { query: { query_string: { query: query, default_field: "segments" } } }; return connection_1.callElasticsearch("POST", url, body, headers, 200); // return result object } else { // segments or operator are not valid return connection_1.callElasticsearch("POST", url, null, headers, 200, validatedParams.errors); // return result object } } exports.profileCount = profileCount;