twitter-api-client
Version:
Node.js / JavaScript client for Twitter API
61 lines (60 loc) • 1.94 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.parse = exports.formatURL = exports.generateHash = exports.createParams = void 0;
exports.createParams = function (params, exclude) {
if (!params) {
return '';
}
var searchParams = new URLSearchParams();
Object.entries(params).forEach(function (_a) {
var key = _a[0], value = _a[1];
if (exclude === null || exclude === void 0 ? void 0 : exclude.includes(key)) {
return;
}
if (typeof value === 'boolean') {
searchParams.append(key, value ? 'true' : 'false');
return;
}
searchParams.append(key, "" + value);
});
return "?" + searchParams.toString();
};
exports.generateHash = function (token) {
var seed = 56852;
var h1 = 0xdeadbeef ^ seed;
var h2 = 0x41c6ce57 ^ seed;
for (var i = 0, ch = void 0; i < token.length; i++) {
ch = token.charCodeAt(i);
h1 = Math.imul(h1 ^ ch, 2654435761);
h2 = Math.imul(h2 ^ ch, 1597334677);
}
h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);
h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);
return (4294967296 * (2097151 & h2) + (h1 >>> 0)).toString(16);
};
exports.formatURL = function (url) {
return url
.replace(/!/g, '%21')
.replace(/'/g, '%27')
.replace(/\(/g, '%28')
.replace(/\)/g, '%29')
.replace(/\*/g, '%2A');
};
exports.parse = function (body) {
var parsed = undefined;
try {
parsed = JSON.parse(body);
}
catch (error) { }
if (parsed) {
return parsed;
}
try {
parsed = JSON.parse('{"' + decodeURI(body).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"') + '"}');
}
catch (error) { }
if (parsed) {
return parsed;
}
return body;
};
;