1 /* This file is part of Clementine. 2 Copyright 2011, David Sansome <me@davidsansome.com> 3 Copyright 2014, Krzysztof Sobiecki <sobkas@gmail.com> 4 Copyright 2014, John Maguire <john.maguire@gmail.com> 5 6 Clementine is free software: you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation, either version 3 of the License, or 9 (at your option) any later version. 10 11 Clementine is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with Clementine. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 #ifndef INTERNET_SPOTIFY_SPOTIFYBLOBDOWNLOADER_H_ 21 #define INTERNET_SPOTIFY_SPOTIFYBLOBDOWNLOADER_H_ 22 23 #include <QMap> 24 #include <QObject> 25 26 class QNetworkAccessManager; 27 class QNetworkReply; 28 class QProgressDialog; 29 30 class SpotifyBlobDownloader : public QObject { 31 Q_OBJECT 32 33 public: 34 SpotifyBlobDownloader(const QString& version, const QString& path, 35 QObject* parent = nullptr); 36 ~SpotifyBlobDownloader(); 37 38 static const char* kSignatureSuffix; 39 40 static bool Prompt(); 41 42 void Start(); 43 44 signals: 45 void Finished(); 46 47 private slots: 48 void ReplyFinished(); 49 void ReplyProgress(); 50 void Cancel(); 51 52 private: 53 void ShowError(const QString& message); 54 void EmitFinished(); 55 56 bool CheckSignature(const QMap<QString, QByteArray>& file_data, 57 const QStringList& signature_filenames); 58 static QByteArray ConvertPEMToDER(const QByteArray& pem); 59 60 private: 61 QString version_; 62 QString path_; 63 64 QNetworkAccessManager* network_; 65 QList<QNetworkReply*> replies_; 66 67 QProgressDialog* progress_; 68 }; 69 70 #endif // INTERNET_SPOTIFY_SPOTIFYBLOBDOWNLOADER_H_ 71