1 #include "qrzlookup.h"
2 #include <QNetworkAccessManager>
3 #include <QNetworkReply>
4 #include <QUrlQuery>
5 #include <QHash>
6 #include <QXmlStreamReader>
7
QRZLookup(QString un,QString pw)8 QRZLookup::QRZLookup(QString un, QString pw)
9 {
10 _username = un;
11 _password = pw;
12 _networkManager = new QNetworkAccessManager();
13 initialize();
14 }
15
initialize()16 void QRZLookup::initialize() {
17 QUrlQuery query;
18 query.addQueryItem("username", _username);
19 query.addQueryItem("password", _password);
20 QUrl url(_url);
21 url.setQuery(query);
22 QNetworkRequest networkRequest(url);
23 connect(_networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(setSessionKey(QNetworkReply*)));
24 _networkManager->get(networkRequest);
25
26 }
27
setSessionKey(QNetworkReply * r)28 void QRZLookup::setSessionKey(QNetworkReply *r) {
29 if(r->error() == QNetworkReply::NoError) {
30 QByteArray data = r->read(2048);
31 QXmlStreamReader reader(data);
32 while(!reader.atEnd() && !reader.hasError()) {
33 if(reader.readNext() == QXmlStreamReader::StartElement && reader.name() == "Key") {
34 _sessionKey = reader.readElementText();
35 }
36 }
37 }
38 r->deleteLater();
39 }
40
lookup(QString dxCall)41 void QRZLookup::lookup(QString dxCall) {
42 QHash<QString, QString> hash;
43 QUrlQuery query;
44 query.addQueryItem("s", _sessionKey);
45 query.addQueryItem("callsign", dxCall);
46 QUrl url(_url);
47 url.setQuery(query);
48 QNetworkRequest networkRequest(url);
49 connect(_networkManager, SIGNAL(finished(QNetworkReply*)), MainWindow, SLOT(setSessionKey(QNetworkReply*)));
50 _networkManager->get(networkRequest);
51 }
52
53
54
55
56