-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathparser.cpp
More file actions
59 lines (49 loc) · 1.07 KB
/
parser.cpp
File metadata and controls
59 lines (49 loc) · 1.07 KB
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
#include "parser.h"
#include <QRegExp>
const QString Parser::NO_ERRORS_STATUS = "Success";
void Parser::findText(QString pageContent, QString text)
{
m_found = pageContent.contains(text);
}
void Parser::findLinks(QString pageContent)
{
QRegExp regExp(m_pattern);
int pos = 0;
m_links.clear();
while ((pos = regExp.indexIn(pageContent, pos)) != -1) {
m_links << regExp.cap(0);
pos += regExp.matchedLength();
}
}
QString Parser::run(QString url, QString text)
{
QString status;
QNetworkReply *reply = m_loader.load(url);
if (reply->error() == QNetworkReply::NoError) {
status = NO_ERRORS_STATUS;
QByteArray byteArray = reply->readAll();
m_load = byteArray.size();
QString pageContent = QString(byteArray.data());
findText(pageContent, text);
findLinks(pageContent);
}
else {
status = "Failure: " + reply->errorString();
m_links.clear();
m_found = false;
}
delete reply;
return status;
}
bool Parser::isFound() const
{
return m_found;
}
QStringList Parser::getLinks() const
{
return m_links;
}
quint32 Parser::getLoad() const
{
return m_load;
}