void GoogleDriveService::FilesFound(const QList<google_drive::File>& files) { for (const google_drive::File& file : files) { if (!IsSupportedMimeType(file.mime_type())) { continue; } QUrl url; url.setScheme("googledrive"); url.setPath(file.id()); Song song; // Add some extra tags from the Google Drive metadata. song.set_etag(file.etag().remove('"')); song.set_mtime(file.modified_date().toTime_t()); song.set_ctime(file.created_date().toTime_t()); song.set_comment(file.description()); song.set_directory_id(0); song.set_url(QUrl(url)); song.set_filesize(file.size()); // Use the Google Drive title if we couldn't read tags from the file. if (song.title().isEmpty()) { song.set_title(file.title()); } MaybeAddFileToDatabase(song, file.mime_type(), file.download_url(), QString("Bearer %1").arg(client_->access_token())); } }
void SkydriveService::ListFilesFinished(QNetworkReply* reply) { reply->deleteLater(); QJson::Parser parser; QVariantMap response = parser.parse(reply).toMap(); QVariantList files = response["data"].toList(); for (const QVariant& f : files) { QVariantMap file = f.toMap(); if (file["type"].toString() == "folder") { ListFiles(file["id"].toString()); } else { QString mime_type = GuessMimeTypeForFile(file["name"].toString()); QUrl url; url.setScheme("skydrive"); url.setPath(file["id"].toString()); Song song; song.set_url(url); song.set_ctime(file["created_time"].toDateTime().toTime_t()); song.set_mtime(file["updated_time"].toDateTime().toTime_t()); song.set_comment(file["description"].toString()); song.set_filesize(file["size"].toInt()); song.set_title(file["name"].toString()); QUrl download_url = file["source"].toUrl(); // HTTPS appears to be broken somehow between Qt & Skydrive downloads. // Fortunately, just changing the scheme to HTTP works. download_url.setScheme("http"); MaybeAddFileToDatabase(song, mime_type, download_url, QString::null); } } }