Recursively fetch everything in the Ubuntu One volume.
This commit is contained in:
parent
823250c7c7
commit
6486e621f1
|
@ -27,7 +27,7 @@ const char* UbuntuOneService::kSettingsGroup = "Ubuntu One";
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
static const char* kFileStorageEndpoint =
|
static const char* kFileStorageEndpoint =
|
||||||
"https://one.ubuntu.com/api/file_storage/v1/~/Ubuntu One/";
|
"https://one.ubuntu.com/api/file_storage/v1";
|
||||||
static const char* kContentRoot = "https://files.one.ubuntu.com";
|
static const char* kContentRoot = "https://files.one.ubuntu.com";
|
||||||
static const char* kSongsTable = "ubuntu_one_songs";
|
static const char* kSongsTable = "ubuntu_one_songs";
|
||||||
static const char* kFtsTable = "ubuntu_one_songs_fts";
|
static const char* kFtsTable = "ubuntu_one_songs_fts";
|
||||||
|
@ -86,7 +86,7 @@ void UbuntuOneService::Connect() {
|
||||||
token_ = s.value("token").toString();
|
token_ = s.value("token").toString();
|
||||||
token_secret_ = s.value("token_secret").toString();
|
token_secret_ = s.value("token_secret").toString();
|
||||||
|
|
||||||
RequestFileList();
|
RequestFileList("/~/Ubuntu One");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -123,17 +123,17 @@ void UbuntuOneService::AuthenticationFinished(
|
||||||
s.setValue("token", token_);
|
s.setValue("token", token_);
|
||||||
s.setValue("token_secret", token_secret_);
|
s.setValue("token_secret", token_secret_);
|
||||||
|
|
||||||
RequestFileList();
|
RequestFileList("/~/Ubuntu One");
|
||||||
}
|
}
|
||||||
|
|
||||||
void UbuntuOneService::RequestFileList() {
|
void UbuntuOneService::RequestFileList(const QString& path) {
|
||||||
QUrl files_url(kFileStorageEndpoint);
|
QUrl files_url(QString(kFileStorageEndpoint) + path);
|
||||||
files_url.addQueryItem("include_children", "true");
|
files_url.addQueryItem("include_children", "true");
|
||||||
QNetworkRequest request(files_url);
|
QNetworkRequest request(files_url);
|
||||||
request.setRawHeader("Authorization", GenerateAuthorisationHeader());
|
request.setRawHeader("Authorization", GenerateAuthorisationHeader());
|
||||||
request.setRawHeader("Accept", "application/json");
|
request.setRawHeader("Accept", "application/json");
|
||||||
|
|
||||||
qLog(Debug) << "Sending files request";
|
qLog(Debug) << "Sending files request" << files_url;
|
||||||
QNetworkReply* files_reply = network_->get(request);
|
QNetworkReply* files_reply = network_->get(request);
|
||||||
NewClosure(files_reply, SIGNAL(finished()),
|
NewClosure(files_reply, SIGNAL(finished()),
|
||||||
this, SLOT(FileListRequestFinished(QNetworkReply*)), files_reply);
|
this, SLOT(FileListRequestFinished(QNetworkReply*)), files_reply);
|
||||||
|
@ -141,19 +141,20 @@ void UbuntuOneService::RequestFileList() {
|
||||||
|
|
||||||
void UbuntuOneService::FileListRequestFinished(QNetworkReply* reply) {
|
void UbuntuOneService::FileListRequestFinished(QNetworkReply* reply) {
|
||||||
QByteArray data = reply->readAll();
|
QByteArray data = reply->readAll();
|
||||||
qLog(Debug) << reply->url();
|
|
||||||
qLog(Debug) << data;
|
|
||||||
qLog(Debug) << reply->rawHeaderList();
|
|
||||||
qLog(Debug) << reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
|
|
||||||
qLog(Debug) << reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute);
|
|
||||||
|
|
||||||
QJson::Parser parser;
|
QJson::Parser parser;
|
||||||
QVariantMap result = parser.parse(data).toMap();
|
QVariantMap result = parser.parse(data).toMap();
|
||||||
|
|
||||||
|
qLog(Debug) << result;
|
||||||
|
|
||||||
QVariantList children = result["children"].toList();
|
QVariantList children = result["children"].toList();
|
||||||
for (const QVariant& c : children) {
|
for (const QVariant& c : children) {
|
||||||
QVariantMap child = c.toMap();
|
QVariantMap child = c.toMap();
|
||||||
|
if (child["kind"].toString() == "file") {
|
||||||
MaybeAddFileToDatabase(child);
|
MaybeAddFileToDatabase(child);
|
||||||
|
} else {
|
||||||
|
RequestFileList(child["resource_path"].toString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ class UbuntuOneService : public InternetService {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void Connect();
|
void Connect();
|
||||||
void RequestFileList();
|
void RequestFileList(const QString& path);
|
||||||
void MaybeAddFileToDatabase(const QVariantMap& file);
|
void MaybeAddFileToDatabase(const QVariantMap& file);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
Loading…
Reference in New Issue