-
Notifications
You must be signed in to change notification settings - Fork 1
/
metainfo.h
108 lines (91 loc) · 2.6 KB
/
metainfo.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#ifndef METAINFO_H
#define METAINFO_H
#include <QByteArray>
#include <QDateTime>
#include <QList>
#include <QMap>
#include <QString>
#include <QStringList>
#include <QVariant>
struct MetaInfoSingleFile
{
qint64 length;
QByteArray md5sum;
QString name;
int pieceLength;
QList<QByteArray> 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<MetaInfoMultiFile> multiFiles() const;
QString name() const;
int pieceLength() const;
QList<QByteArray> sha1Sums() const;
// Total size
qint64 totalSize() const;
//*********** MY METHODS USE THIS**************
QString getMainTrackerUrl() const;
QString getName() const;
qint64 getTotalLength() const;
int getPieceLength() const;
double getNumberOfPieces() const;
QList<QByteArray> getSha1Sums() const;
QList<QString> getMultiFilePaths() const;
QList<qint64> getMultiFileLengths() const;
QDateTime getCreationDate() const;
QString getComment() const;
QString getCreatedBy() const;
qint64 getFileLengthByPath(QString path) const;
int getSingleFilePieceLength() const;
QMap<QString,qint64> getMultiFileLengthMap() const;
bool isMultiFile() const;
//**********END OF MY METHODS********************
// OTHER UNUSED METHODS
qint64 getMetaLength() const;
QByteArray getMetaMD5() const;
QString getSingleFileName() const;
QList<QByteArray> getSingleFileSha1Sums() const;
private:
QString errString;
QByteArray content;
QByteArray infoData;
FileForm metaInfoFileForm;
MetaInfoSingleFile metaInfoSingleFile;
QList<MetaInfoMultiFile> metaInfoMultiFiles;
QString metaInfoAnnounce;
QStringList metaInfoAnnounceList;
QDateTime metaInfoCreationDate;
QString metaInfoComment;
QString metaInfoCreatedBy;
QString metaInfoName;
int metaInfoPieceLength;
QList<QByteArray> metaInfoSha1Sums;
// my fields
QMap<QString, qint64> multiFilesLengths;
};
#endif