// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #ifndef METAINFO_H #define METAINFO_H #include #include #include #include #include #include #include struct MetaInfoSingleFile { qint64 length; QByteArray md5sum; QString name; int pieceLength; QList sha1Sums; }; struct MetaInfoMultiFile { qint64 length; QByteArray md5sum; QString path; }; class MetaInfo { public: enum FileForm { SingleFileForm, MultiFileForm }; MetaInfo(); void clear(); bool parse(const QByteArray &data); QString errorString() const; QByteArray infoValue() const; FileForm fileForm() const; QString announceUrl() const; QStringList announceList() const; QDateTime creationDate() const; QString comment() const; QString createdBy() const; // For single file form MetaInfoSingleFile singleFile() const; // For multifile form QList multiFiles() const; QString name() const; int pieceLength() const; QList sha1Sums() const; // Total size qint64 totalSize() const; private: QString errString; QByteArray content; QByteArray infoData; FileForm metaInfoFileForm; MetaInfoSingleFile metaInfoSingleFile; QList metaInfoMultiFiles; QString metaInfoAnnounce; QStringList metaInfoAnnounceList; QDateTime metaInfoCreationDate; QString metaInfoComment; QString metaInfoCreatedBy; QString metaInfoName; int metaInfoPieceLength; QList metaInfoSha1Sums; }; #endif