UNPKG

@apihawk/billia-sdk

Version:

The ApiHawk Billia SDK

153 lines (152 loc) 5.19 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { 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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const crypto_1 = require("crypto"); const billia_sdk_service_base_1 = require("../lib/billia-sdk-service-base"); /** * Generates a random PIN - a string with 4 digits. */ function randomPin() { return new Promise((resolve) => { crypto_1.randomBytes(4, (err, buf) => { if (err) { return Promise.reject(err); } const hex = buf.toString('hex'); const int32 = parseInt(hex, 16); return resolve(int32.toString().slice(-4)); }); }); } class BilliaSDKUser extends billia_sdk_service_base_1.BilliaSDKServiceBase { /** * Changes the password of the currently logged in user. * @param session - user session * @param data - old and new password */ changePassword(session, data) { return __awaiter(this, void 0, void 0, function* () { const validationError = yield this.validate(data, [ 'user', 'change-password' ]); if (validationError) { throw validationError; } const response = yield this.api.call({ url: '/user/change-password', method: 'POST', body: { current_password: data.current_password, new_password: data.new_password }, session, headers: { Accept: 'application/hal+json', 'Content-Type': 'application/json' } }); return response; }); } /** * Gets the user settings as key-value pairs. * * @param session - user session */ getSettings(session) { return __awaiter(this, void 0, void 0, function* () { const response = yield this.api.call({ url: `/user/setting?page_size=-1`, method: 'GET', session, headers: { Accept: 'application/hal+json' } }); const settings = response._embedded.oauth_users_setting.reduce((accumulated, setting) => { accumulated[setting.name] = setting.value; return accumulated; }, {}); return settings; }); } /** * Gets a single user setting by its key. * * @param session - user session * @param key - setting name */ getSetting(session, key) { return __awaiter(this, void 0, void 0, function* () { const response = yield this.api.call({ url: `/user/setting/${key}`, method: 'GET', session, headers: { Accept: 'application/hal+json' } }); return response; }); } /** * Sets the value of a user setting by its key. * * @param session - user session * @param key - setting name (key) * @param value - setting value */ putSetting(session, key, value) { return __awaiter(this, void 0, void 0, function* () { const response = yield this.api.call({ url: `/user/setting/${key}`, method: 'PUT', body: { value }, session, headers: { Accept: 'application/hal+json', 'Content-Type': 'application/json' } }); return response; }); } /** * Generates a new random support PIN code for the customer and saves it. * * @param session - user session * @param userId - user ID */ changeSupportPin(session, userId) { return __awaiter(this, void 0, void 0, function* () { const newPin = yield randomPin(); const response = yield this.api.call({ url: `/user/users/${userId}`, method: 'PATCH', body: { support_pin: newPin }, session, headers: { Accept: 'application/hal+json', 'Content-Type': 'application/json' } }); const result = { support_pin: response.support_pin }; return result; }); } } exports.BilliaSDKUser = BilliaSDKUser;