@koush/ring-client-api
Version:
Unofficial API for Ring doorbells, cameras, security alarm system and smart lighting
123 lines (122 loc) • 4.48 kB
JavaScript
;
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());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.randomString = exports.randomInteger = exports.mapAsync = exports.stringify = exports.requestInput = exports.getHardwareId = exports.generateUuid = exports.enableDebug = exports.useLogger = exports.logError = exports.logInfo = exports.logDebug = exports.delay = void 0;
const debug_1 = __importDefault(require("debug"));
const colors_1 = require("colors");
const readline_1 = require("readline");
const uuid_1 = require("uuid");
const systeminformation_1 = require("systeminformation");
const debugLogger = (0, debug_1.default)('ring'), uuidNamespace = 'e53ffdc0-e91d-4ce1-bec2-df939d94739c';
let logger = {
logInfo(message) {
debugLogger(message);
},
logError(message) {
debugLogger((0, colors_1.red)(message));
},
}, debugEnabled = false;
function delay(milliseconds) {
return new Promise((resolve) => {
setTimeout(resolve, milliseconds);
});
}
exports.delay = delay;
function logDebug(message) {
if (debugEnabled) {
logger.logInfo(message);
}
}
exports.logDebug = logDebug;
function logInfo(message) {
logger.logInfo(message);
}
exports.logInfo = logInfo;
function logError(message) {
logger.logError(message);
}
exports.logError = logError;
function useLogger(newLogger) {
logger = newLogger;
}
exports.useLogger = useLogger;
function enableDebug() {
debugEnabled = true;
}
exports.enableDebug = enableDebug;
function generateUuid(seed) {
if (seed) {
return (0, uuid_1.v5)(seed, uuidNamespace);
}
return (0, uuid_1.v4)();
}
exports.generateUuid = generateUuid;
function getHardwareId(systemId) {
return __awaiter(this, void 0, void 0, function* () {
if (systemId) {
return generateUuid(systemId);
}
const timeoutValue = '-1', { os: id } = yield Promise.race([
(0, systeminformation_1.uuid)(),
delay(5000).then(() => ({ os: timeoutValue })),
]);
if (id === timeoutValue) {
logError('Request for system uuid timed out. Falling back to random session id');
return (0, uuid_1.v4)();
}
if (id === '-') {
// default value set by systeminformation if it can't find a real value
logError('Unable to get system uuid. Falling back to random session id');
return (0, uuid_1.v4)();
}
return generateUuid(id);
});
}
exports.getHardwareId = getHardwareId;
function requestInput(question) {
return __awaiter(this, void 0, void 0, function* () {
const lineReader = (0, readline_1.createInterface)({
input: process.stdin,
output: process.stdout,
}), answer = yield new Promise((resolve) => {
lineReader.question(question, resolve);
});
lineReader.close();
return answer.trim();
});
}
exports.requestInput = requestInput;
function stringify(data) {
if (typeof data === 'string') {
return data;
}
if (typeof data === 'object' && Buffer.isBuffer(data)) {
return data.toString();
}
return JSON.stringify(data) + '';
}
exports.stringify = stringify;
function mapAsync(records, asyncMapper) {
return Promise.all(records.map((record) => asyncMapper(record)));
}
exports.mapAsync = mapAsync;
function randomInteger() {
return Math.floor(Math.random() * 99999999) + 100000;
}
exports.randomInteger = randomInteger;
function randomString(length) {
const uuid = generateUuid();
return uuid.replace(/-/g, '').substring(0, length).toLowerCase();
}
exports.randomString = randomString;