@apihawk/billia-sdk
Version:
The ApiHawk Billia SDK
153 lines (152 loc) • 5.19 kB
JavaScript
;
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;