unomi-sdk-node
Version:
Node module to interact with unomi.
65 lines (59 loc) • 2.62 kB
text/typescript
import * as profile from "./actions/profiles";
import * as rule from "./actions/rules";
import * as segment from "./actions/segments";
import * as comparisonOperator from "./actions/comparisonOperators";
import * as matchType from "./actions/matchTypes";
import * as dateExpression from "./actions/dateExpression";
import { Connection, ConnectionData } from "./../src/types/main.d";
export function connect(connectionData: ConnectionData): Connection {
// connection details for unomi/elasticsearch
const baseUrlUnomi = connectionData.urlUnomi
const baseUrlElasticsearch = connectionData.urlElasticsearch
const auth = {
username: connectionData.auth.username,
password: connectionData.auth.password,
bearerToken: connectionData.auth.bearerToken
}
// headers for API calls
let headers = {
"Authorization": "",
"Content-Type": "application/json"
}
// no bearer token
if (auth.bearerToken === "" || typeof auth.bearerToken === "undefined") {
headers.Authorization = "Basic " + btoa(auth.username + ":" + auth.password)
}
// bearer token
else {
headers.Authorization = "Bearer " + auth.bearerToken
}
return { // all functions that can be used
profile: {
get: (profileId) => profile.get(baseUrlUnomi, headers, profileId),
allUsedProperties: () => profile.allUsedProperties(baseUrlElasticsearch, headers),
count: () => profile.count(baseUrlUnomi, headers)
},
rule: {
getAll: () => rule.getAll(baseUrlUnomi, headers),
get: (ruleId) => rule.get(baseUrlUnomi, headers, ruleId),
create: (params) => rule.create(baseUrlUnomi, headers, params)
},
segment: {
getAll: (sortOrder, limit, offset) => segment.getAll(baseUrlUnomi, headers, sortOrder, limit, offset),
get: (segmentId) => segment.get(baseUrlUnomi, headers, segmentId),
create: (params) => segment.create(baseUrlUnomi, headers, params),
update: (params) => segment.update(baseUrlUnomi, headers, params),
delete: (segmentId) => segment.deleteSegment(baseUrlUnomi, headers, segmentId),
profileCount: (params) => segment.profileCount(baseUrlElasticsearch, headers, params)
},
comparisonOperator: {
getAll: () => comparisonOperator.getAll()
},
matchType: {
getAll: () => matchType.getAll()
},
dateExpression: {
isValid: (dateExpr) => dateExpression.isValid(dateExpr)
}
}
}