@tragedy-labs/sprite
Version:
A TypeScript driver for ArcadeDB
54 lines • 1.69 kB
JavaScript
import { SpriteHeaders } from '../rest/SpriteHeaders.js';
export function isNewSession(parameters) {
if (Object.hasOwn(parameters, 'address') &&
Object.hasOwn(parameters, 'username') &&
Object.hasOwn(parameters, 'password')) {
return true;
}
else {
return false;
}
}
/**
* Base class for handling common session functionality.
*/
class Session {
address;
headers;
endpoints = {};
constructor(params) {
if (isNewSession(params)) {
const { username, address, password } = params;
// remove trailing slash from the address
this.address = address.replace(/\/$/, '');
this.headers = SpriteHeaders.initialize(username, password);
}
else {
const { session } = params;
this.address = session.address;
this.headers = session.headers;
}
}
/**
* Builds the endpoints for the session.
* @param routes - The routes to build endpoints for.
* @param prefix - The prefix for the endpoints.
* @param suffix - The optional suffix for the endpoints.
* @returns A record of the session's endpoints.
*/
buildEndPoints(routes, suffix) {
const endpoints = {};
const prefix = `${this.address}/api/v1`;
Object.values(routes).forEach((route) => {
endpoints[route] = suffix
? `${prefix}/${route}/${suffix}`
: `${prefix}/${route}`;
});
if (suffix) {
endpoints.server = `${prefix}/${'server'}`;
}
return endpoints;
}
}
export { Session };
//# sourceMappingURL=Session.js.map