mirror of
https://github.com/jwetzell/psn-js.git
synced 2026-08-15 20:33:52 +00:00
34 lines
1.0 KiB
TypeScript
34 lines
1.0 KiB
TypeScript
import { Constants } from '../../constants.js';
|
|
import { InfoTrackerChunk } from '../../models/info/info-tracker-chunk.js';
|
|
import { InfoTrackerListChunk, InfoTrackerListChunkData } from '../../models/info/info-tracker-list-chunk.js';
|
|
import { Decoders } from '../index.js';
|
|
|
|
export default (buffer: Uint8Array): InfoTrackerListChunk => {
|
|
const chunk = Decoders.Chunk(buffer);
|
|
|
|
const trackers: InfoTrackerChunk[] = [];
|
|
|
|
if (chunk.header.hasSubchunks && chunk.chunkData) {
|
|
let offset = 0;
|
|
if (chunk.header.dataLen) {
|
|
while (offset < chunk.header.dataLen) {
|
|
const trackerChunk = Decoders.InfoTrackerChunk(chunk.chunkData.subarray(offset));
|
|
offset += Constants.CHUNK_HEADER_SIZE;
|
|
if (trackerChunk.chunk.header.dataLen) {
|
|
offset += trackerChunk.chunk.header.dataLen;
|
|
}
|
|
if (trackerChunk.chunk.header.id !== undefined) {
|
|
trackers.push(trackerChunk);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
const data: InfoTrackerListChunkData = {
|
|
trackers,
|
|
};
|
|
return {
|
|
chunk,
|
|
data,
|
|
};
|
|
};
|