UNPKG

andrade-soulseek-downloader

Version:

Simple, safe Soulseek download library with built-in rate limiting to prevent bans

197 lines 7.05 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.MessageFactory = void 0; const crypto = __importStar(require("crypto")); const zlib = __importStar(require("zlib")); const message_1 = require("./message"); exports.MessageFactory = { to: { peer: { pierceFw: (token) => { return new message_1.Message() .int8(0) .rawHexStr(token); }, peerInit: (username, type, token) => { return new message_1.Message() .int8(1) .str(username) .str(type) .rawHexStr(token); }, sharedFileList: (number, name, filesCount, filename) => { return new message_1.Message() .int32(5) .int32(number) .str(name) .int32(filesCount) .int8(1) .str(filename) .int32(3000000) .int32(0) .str('mp3') .int32(0); }, fileSearchResult: (files, token, user) => { let msg = new message_1.Message(); msg.str(user) .rawHexStr(token) .int32(files.length); files.forEach(file => { msg.int8(0); msg.str(file.value.file); msg.int32(file.value.size); msg.int32(0); msg.str('ext'); msg.int32(0); }); msg.int8(1); msg.int32(123); msg.int32(0); return new message_1.Message() .int32(9) .writeBuffer(zlib.deflateSync(msg.data)); }, transferRequest: (file, token) => { return new message_1.Message() .int32(40) .int32(0) .rawHexStr(token) .str(file); }, transferResponse: (token) => { return new message_1.Message() .int32(41) .rawHexStr(token) .int8(1); } }, server: { login: (credentials) => { return new message_1.Message() .int32(1) .str(credentials.user) .str(credentials.pass) .int32(160) .str(crypto.createHash('md5').update(credentials.user + credentials.pass).digest('hex')) .int32(17); }, setWaitPort: (port) => { return new message_1.Message() .int32(2) .int32(port); }, getPeerAddress: (username) => { return new message_1.Message() .int32(3) .str(username); }, addUser: (user) => { return new message_1.Message() .int32(5) .str(user); }, fileSearch: (query, token) => { return new message_1.Message() .int32(26) .rawHexStr(token) .str(query); }, setStatus: (status) => { return new message_1.Message() .int32(28) .int32(status); }, sharedFoldersFiles: (folderCount, fileCount) => { return new message_1.Message() .int32(35) .int32(folderCount) .int32(fileCount); }, haveNoParents: (flag) => { return new message_1.Message() .int32(71) .int32(flag); }, parentIp: (ip) => { return new message_1.Message() .int32(73) .int8(ip[0]) .int8(ip[1]) .int8(ip[2]) .int8(ip[3]); } } }, from: { peer: { fileSearchResult: (buffer) => { const msg = new message_1.Message(buffer); const user = msg.str(); const currentToken = msg.rawHexStr(4); const nbFiles = msg.int32(); const files = []; for (let i = 0; i < nbFiles; i++) { msg.int8(); const filename = msg.str(); const filesize = msg.int32(); msg.int32(); msg.str(); const nbAttrib = msg.int32(); const attribs = {}; for (let attrib = 0; attrib < nbAttrib; attrib++) { attribs[msg.int32()] = msg.int32(); } files.push({ user: user, file: filename, size: filesize, attribs }); } const slots = msg.int8(); const speed = msg.int32(); return { currentToken: currentToken, files: files, slots: slots, speed: speed }; } } } }; //# sourceMappingURL=message-factory.js.map