~ubuntuone-hackers/clickmanager-plugin/trunk

« back to all changes in this revision

Viewing changes to src/clickmanager.cpp

  • Committer: Tarmac
  • Author(s): Diego Sarmentero
  • Date: 2013-09-26 19:40:06 UTC
  • mfrom: (5.2.17 sign-url)
  • Revision ID: tarmac-20130926194006-z10d54ghcu2ppqdt
- Support signed url.
- Improve error handling. Fixes: https://bugs.launchpad.net/bugs/1231144, https://bugs.launchpad.net/bugs/1231146.

Approved by PS Jenkins bot, Alejandro J. Cura.

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
#include <QJsonValue>
26
26
#include <QDebug>
27
27
 
 
28
namespace ClickPlugin {
 
29
 
28
30
ClickManager::ClickManager(QQuickItem *parent):
29
31
    QQuickItem(parent)
30
32
  , m_process(this)
31
33
{
32
 
    this->m_updatesAvailable = false;
33
 
    this->connect(&(this->m_process), SIGNAL(finished(int)),
 
34
    QObject::connect(&m_service, SIGNAL(credentialsFound(const Token&)),
 
35
                     this, SLOT(handleCredentialsFound(Token)));
 
36
    QObject::connect(&m_service, SIGNAL(credentialsNotFound()),
 
37
                     this, SLOT(handleCredentialsNotFound()));
 
38
    QObject::connect(&(this->m_process), SIGNAL(finished(int)),
34
39
                  this, SLOT(processOutput()));
35
 
    this->connect(&(this->network), SIGNAL(updatesFound()),
 
40
    QObject::connect(&(this->m_network), SIGNAL(updatesFound()),
36
41
                  this, SLOT(processUpdates()));
37
 
    this->connect(&(this->network), SIGNAL(updatesNotFound()),
 
42
    QObject::connect(&(this->m_network), SIGNAL(updatesNotFound()),
38
43
                  this, SIGNAL(updatesNotFound()));
39
 
    this->connect(&(this->network), SIGNAL(downloadUrlFound(QString,QString)),
 
44
    QObject::connect(&(this->m_network), SIGNAL(downloadUrlFound(QString,QString)),
40
45
                  this, SLOT(downloadUrlObtained(QString,QString)));
41
 
    this->connect(&(this->downloader), SIGNAL(downloadCreated(QString,QString)),
 
46
    QObject::connect(&(this->downloader), SIGNAL(downloadCreated(QString,QString)),
42
47
                  this, SLOT(downloadCreated(QString,QString)));
 
48
    QObject::connect(&(this->downloader), SIGNAL(downloadNotCreated(QString,QString)),
 
49
                  this, SLOT(downloadNotCreated(QString,QString)));
43
50
}
44
51
 
45
52
ClickManager::~ClickManager()
46
53
{
47
54
}
48
55
 
49
 
void ClickManager::checkUpdates()
 
56
void ClickManager::handleCredentialsFound(Token token)
50
57
{
 
58
    qDebug() << "Credentials found.";
 
59
    this->m_token = token;
51
60
    QStringList args("list");
52
61
    args << "--manifest";
53
62
    this->m_process.start("click", args);
54
63
}
55
64
 
 
65
void ClickManager::handleCredentialsNotFound()
 
66
{
 
67
    qDebug() << "No credentials were found.";
 
68
    emit this->credentialsNotFound();
 
69
}
 
70
 
 
71
void ClickManager::checkUpdates()
 
72
{
 
73
    this->m_service.getCredentials();
 
74
}
 
75
 
56
76
void ClickManager::processOutput()
57
77
{
58
78
    QString output(this->m_process.readAllStandardOutput());
72
92
        this->m_apps[app->getPackageName()] = app;
73
93
    }
74
94
 
75
 
    this->network.checkForNewVersions(this->m_apps);
 
95
    this->m_network.checkForNewVersions(this->m_apps);
76
96
}
77
97
 
78
98
void ClickManager::processUpdates()
90
110
void ClickManager::startDownload(QString packagename)
91
111
{
92
112
    qDebug() << "Download Package:" << packagename;
93
 
    this->network.getResourceUrl(packagename);
 
113
    this->m_network.getResourceUrl(packagename);
94
114
}
95
115
 
96
116
void ClickManager::downloadUrlObtained(QString packagename, QString url)
97
117
{
98
 
    this->downloader.startDownload(packagename, url.append("?noauth=1"));
99
 
    qDebug() << "Download Url:" << url;
 
118
    if(this->m_token.isValid()) {
 
119
        QString authHeader = this->m_token.signUrl(url, QStringLiteral("GET"));
 
120
        qDebug() << "Download Url:" << url;
 
121
        this->m_apps[packagename]->setError("");
 
122
        this->downloader.startDownload(packagename, url, authHeader);
 
123
    } else {
 
124
        Application* app = this->m_apps[packagename];
 
125
        app->setError("Invalid User Token");
 
126
    }
100
127
}
101
128
 
102
129
void ClickManager::downloadCreated(QString packagename, QString dbuspath)
105
132
    this->m_apps[packagename]->setDbusPath(dbuspath);
106
133
    this->m_apps[packagename]->setUpdateState(true);
107
134
}
 
135
 
 
136
void ClickManager::downloadNotCreated(QString packagename, QString error)
 
137
{
 
138
    Application* app = this->m_apps[packagename];
 
139
    app->setError(error);
 
140
}
 
141
 
 
142
}