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