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 "eveskilltraining.h"
6 #include "eveaccount.h"
8 #include <QXmlStreamReader>
9 #include <QNetworkAccessManager>
10 #include <QNetworkRequest>
11 #include <QNetworkReply>
13 EveSkillTraining::EveSkillTraining(QObject *parent) :
26 bool EveSkillTraining::fromXml(QXmlStreamReader &xml)
28 xml.readNextStartElement();
29 if (xml.name() != "eveapi")
31 xml.readNextStartElement();
32 if (xml.name() != "currentTime")
35 xml.readNextStartElement(); // end currentTime element
36 xml.readNextStartElement(); // start result element
37 if (xml.name() != "result") {
38 qDebug() << "Wrong element:" << xml.name();
41 qDebug() << "passed, element is result";
44 inResult = xml.readNextStartElement();
45 qDebug() << "element:" << xml.name();
46 if (xml.name() == "trainingEndTime") {
47 qDebug() << "Parse end time";
48 endTime = QDateTime::fromString(xml.readElementText(),"yyyy-MM-dd hh:mm:ss");//2008-08-17 06:43:00
49 startTime.setTimeSpec(Qt::UTC);
52 } else if (xml.name() == "trainingStartTime") {
53 qDebug() << "Parse start time";
54 startTime = QDateTime::fromString(xml.readElementText(),"yyyy-MM-dd hh:mm:ss");//2008-08-17 06:43:00
55 startTime.setTimeSpec(Qt::UTC);
56 qDebug() << startTime;
58 } else if (xml.name() == "trainingTypeID") {
59 typeId = xml.readElementText().toInt();
61 } else if (xml.name() == "trainingStartSP"){
62 startSkillpoints = xml.readElementText().toInt();
64 } else if (xml.name() == "trainingDestinationSP"){
65 destSkillpoints = xml.readElementText().toInt();
67 } else if (xml.name() == "trainingToLevel"){
68 level = xml.readElementText().toInt();
69 } else if (xml.name() == "skillInTraining" ) {
71 training = xml.readElementText().toInt() == 1;
72 qDebug() << "Training?" << training;
73 } else if (xml.name() == "currentTQTime" ) {
74 currentTime = QDateTime::fromString(xml.readElementText(),"yyyy-MM-dd hh:mm:ss");
75 startTime.setTimeSpec(Qt::UTC);
76 qDebug() << "Current: " << currentTime;
79 xml.skipCurrentElement();
82 bool cached = xml.readNextStartElement(); // cachedUntil
84 QDateTime cachedTime = QDateTime::fromString(xml.readElementText(),"yyyy-MM-dd hh:mm:ss");
85 cachedTime.setTimeSpec(Qt::UTC);
87 qDebug() << "Parsing finished";
91 void EveSkillTraining::fetchInfo()
93 if (m_character == NULL || m_account == NULL)
95 QNetworkRequest req(QUrl(QString("http://api.eveonline.com/char/SkillInTraining.xml.aspx?apiKey=%1&userID=%2&characterID=%3")
96 .arg(m_account->apiKey())
97 .arg(m_account->userId())
98 .arg(m_character->characterId)));
99 m_reply = m_mgr.get(req);
100 connect(m_reply,SIGNAL(finished()),this,SLOT(infoReady()));
103 void EveSkillTraining::infoReady()
105 if (m_reply->error()) {
106 qDebug() << "Failed! " << m_reply->errorString();
109 qDebug() << "Skill reply";
110 QByteArray reply = m_reply->readAll();
111 qDebug() << "Reply ready";
113 QXmlStreamReader reader(reply);
115 m_reply->deleteLater();