summaryrefslogtreecommitdiffstats
path: root/asset_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'asset_test.cpp')
-rw-r--r--asset_test.cpp170
1 files changed, 0 insertions, 170 deletions
diff --git a/asset_test.cpp b/asset_test.cpp
deleted file mode 100644
index 90da314f..00000000
--- a/asset_test.cpp
+++ /dev/null
@@ -1,170 +0,0 @@
-#include <QString>
-#include <QDebug>
-#include <QtXml/QtXml>
-
-#include "dlqueue.h"
-
-inline QDomElement getDomElementByTagName(QDomElement parent, QString tagname)
-{
- QDomNodeList elementList = parent.elementsByTagName(tagname);
- if (elementList.count())
- return elementList.at(0).toElement();
- else
- return QDomElement();
-}
-
-class ThreadedDeleter : public QThread
-{
- Q_OBJECT
-public:
- void run()
- {
- QDirIterator iter(m_base, QDirIterator::Subdirectories);
- QStringList nuke_list;
- int base_length = m_base.length();
- while (iter.hasNext())
- {
- QString filename = iter.next();
- QFileInfo current(filename);
- // we keep the dirs... whatever
- if(current.isDir())
- continue;
- QString trimmedf = filename;
- trimmedf.remove(0, base_length + 1);
- if(m_whitelist.contains(trimmedf))
- {
- //qDebug() << trimmedf << " gets to live";
- }
- else
- {
- // DO NOT TOLERATE JUNK
- //qDebug() << trimmedf << " dies";
- QFile f (filename);
- f.remove();
- }
- }
- };
- QString m_base;
- QStringList m_whitelist;
-};
-
-class NukeAndPaveJob: public Job
-{
- Q_OBJECT
-public:
-
- explicit NukeAndPaveJob(QString base, QStringList whitelist)
- :Job()
- {
- QDir dir(base);
- deleterThread.m_base = dir.absolutePath();
- deleterThread.m_whitelist = whitelist;
- };
-public slots:
- virtual void start()
- {
- connect(&deleterThread, SIGNAL(finished()), SLOT(threadFinished()));
- deleterThread.start();
- };
- void threadFinished()
- {
- emit finish();
- }
-private:
- ThreadedDeleter deleterThread;
-};
-
-class DlMachine : public QObject
-{
- Q_OBJECT
-public slots:
- void filesFinished()
- {
- qApp->quit();
- }
-
- void fetchFinished()
- {
- QString prefix("http://s3.amazonaws.com/Minecraft.Resources/");
- QString fprefix("assets/");
- QStringList nuke_whitelist;
-
- JobPtr firstJob = index_job->getFirstJob();
- auto DlJob = firstJob.dynamicCast<DownloadJob>();
- QByteArray ba = DlJob->m_data;
-
- QString xmlErrorMsg;
- QDomDocument doc;
- if (!doc.setContent(ba, false, &xmlErrorMsg))
- {
- qDebug() << "Failed to process s3.amazonaws.com/Minecraft.Resources. XML error:" <<
- xmlErrorMsg << ba;
- }
- //QRegExp etag_match(".*([a-f0-9]{32}).*");
- QDomNodeList contents = doc.elementsByTagName("Contents");
-
- JobList *job = new JobList();
- connect(job, SIGNAL(finished()), SLOT(filesFinished()));
-
- for (int i = 0; i < contents.length(); i++)
- {
- QDomElement element = contents.at(i).toElement();
-
- if (element.isNull())
- continue;
-
- QDomElement keyElement = getDomElementByTagName(element, "Key");
- QDomElement lastmodElement = getDomElementByTagName(element, "LastModified");
- QDomElement etagElement = getDomElementByTagName(element, "ETag");
- QDomElement sizeElement = getDomElementByTagName(element, "Size");
-
- if (keyElement.isNull() || lastmodElement.isNull() || etagElement.isNull() || sizeElement.isNull())
- continue;
-
- QString keyStr = keyElement.text();
- QString lastModStr = lastmodElement.text();
- QString etagStr = etagElement.text();
- QString sizeStr = sizeElement.text();
-
- //Filter folder keys
- if (sizeStr == "0")
- continue;
-
- QString trimmedEtag = etagStr.remove('"');
- job->add(DownloadJob::create(QUrl(prefix + keyStr),fprefix + keyStr, trimmedEtag));
- nuke_whitelist.append(keyStr);
- }
- job->add(JobPtr(new NukeAndPaveJob(fprefix, nuke_whitelist)));
- files_job.reset(job);
- dl.enqueue(files_job);
- }
- void fetchStarted()
- {
- qDebug() << "Started downloading!";
- }
-public:
- void start()
- {
- JobList *job = new JobList();
- job->add(DownloadJob::create(QUrl("http://s3.amazonaws.com/Minecraft.Resources/")));
- connect(job, SIGNAL(finished()), SLOT(fetchFinished()));
- connect(job, SIGNAL(started()), SLOT(fetchStarted()));
- index_job.reset(job);
- dl.enqueue(index_job);
- }
- JobListQueue dl;
- JobListPtr index_job;
- JobListPtr files_job;
-};
-
-int main(int argc, char *argv[])
-{
- QCoreApplication app(argc, argv);
-
- DlMachine dl;
- dl.start();
-
- return app.exec();
-}
-
-#include "asset_test.moc"