9b44c7cf176828f581f04540cce8ed9edb8c5533
[evehomescreen] / src / evemodel.cpp
1 #include "evemodel.h"
2 #include "eveaccount.h"
3 #include <QNetworkAccessManager>
4 #include <QXmlStreamReader>
5 #include <QUrl>
6 #include <QNetworkAccessManager>
7 #include <QNetworkRequest>
8 #include <QtDebug>
9 static QUrl imageUrl("http://img.eve.is/serv.asp");
10
11 EveModel::EveModel(QObject *parent) :
12     QObject(parent),
13     m_userId(0)
14 {
15 }
16
17 void EveModel::fetchAccounts()
18 {
19     QNetworkRequest fetch(QUrl(QString("http://api.eveonline.com/account/Characters.xml.aspx?apiKey=%1&userID=%2")
20                                .arg(apiKey())
21                                .arg(userId())));
22     m_reply = mgr.get(fetch);
23     qDebug() << "Fetch accounts, reply " << m_reply;
24     connect(m_reply,SIGNAL(finished()),this,SLOT(replyReady()));
25     connect(m_reply,SIGNAL(error(QNetworkReply::NetworkError)),this,SLOT(networkError(QNetworkReply::NetworkError)));
26 }
27
28 void EveModel::replyReady()
29 {
30     if (m_reply->error()) {
31         qDebug() << "Failed! " << m_reply->errorString();
32         return;
33     }
34     QByteArray reply = m_reply->readAll();
35     qDebug() << "Reply ready";
36     qDebug() << reply;
37     QXmlStreamReader reader(reply);
38
39     reader.readNextStartElement();
40     if (reader.error()) {
41         qDebug() << "Parse error: " << reader.errorString();
42     }
43     qDebug() << "Relement: " << reader.name();
44     if (reader.name() != "eveapi")
45         return;
46     reader.readNextStartElement();
47     if (reader.error()) {
48         qDebug() << "Parse error: " << reader.errorString();
49     }
50     qDebug() << "1 element: " << reader.name();
51     if (reader.name() != "currentTime")
52         return;
53     reader.readNextStartElement();
54     reader.readNextStartElement();
55     if (reader.error()) {
56         qDebug() << "Parse error: " << reader.errorString();
57     }
58     qDebug() << "2 element: " << reader.name();
59     if (reader.name() != "result")
60         return;
61     reader.readNextStartElement();
62     qDebug() << "Relement: " << reader.name();
63     if (reader.name() != "rowset")
64         return;
65     reader.readNextStartElement();
66     qDebug() << "3 element: " << reader.name();
67     if (reader.name() == "row")
68         m_characters.clear();
69     while (reader.name() == "row") {
70         EveCharacter chara;
71         if (!chara.fromXml(reader)) {
72             qDebug() << "Error parsing character data";
73             break;
74         }
75         m_characters.append(chara);
76         reader.readNextStartElement(); // end current row
77         reader.readNextStartElement(); // start next row
78     }
79     m_reply->deleteLater();
80     emit accountsReady();
81 }
82
83 void EveModel::networkError(QNetworkReply::NetworkError error)
84 {
85     qDebug() << "Network error " << error;
86 }
87