tools/FileDownloader.hpp
Go to the documentation of this file.
00001 /*
00002 
00003   This file is part of OpenFLUID software
00004   Copyright(c) 2007, INRA - Montpellier SupAgro
00005 
00006 
00007  == GNU General Public License Usage ==
00008 
00009   OpenFLUID is free software: you can redistribute it and/or modify
00010   it under the terms of the GNU General Public License as published by
00011   the Free Software Foundation, either version 3 of the License, or
00012   (at your option) any later version.
00013 
00014   OpenFLUID is distributed in the hope that it will be useful,
00015   but WITHOUT ANY WARRANTY; without even the implied warranty of
00016   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00017   GNU General Public License for more details.
00018 
00019   You should have received a copy of the GNU General Public License
00020   along with OpenFLUID. If not, see <http://www.gnu.org/licenses/>.
00021 
00022 
00023  == Other Usage ==
00024 
00025   Other Usage means a use of OpenFLUID that is inconsistent with the GPL
00026   license, and requires a written agreement between You and INRA.
00027   Licensees for Other Usage of OpenFLUID may use this file in accordance
00028   with the terms contained in the written agreement between You and INRA.
00029   
00030 */
00031 
00032 
00033 /**
00034   \file FileDownloader.hpp
00035   \brief Header of ...
00036 
00037   \author Jean-Christophe FABRE <fabrejc@supagro.inra.fr>
00038  */
00039 
00040 
00041 
00042 #ifndef __FILEDOWNLOADER_HPP__
00043 #define __FILEDOWNLOADER_HPP__
00044 
00045 #include <string>
00046 #include <openfluid/dllexport.hpp>
00047 #include <QNetworkAccessManager>
00048 #include <QNetworkRequest>
00049 #include <QNetworkReply>
00050 
00051 
00052 // =====================================================================
00053 // =====================================================================
00054 
00055 namespace openfluid { namespace tools {
00056 
00057 /**
00058   Management of data downloads over network
00059 */
00060 class DLLEXPORT FileDownloader : public QObject
00061 {
00062   Q_OBJECT
00063 
00064   private:
00065 
00066     QNetworkAccessManager m_Manager;
00067     QByteArray m_FileContent;
00068     bool m_ContentDownloaded;
00069 
00070     FileDownloader();
00071 
00072     ~FileDownloader();
00073 
00074     /**
00075       @action Send request to get content of URL file
00076     */
00077     void downloadContent(const std::string& URL);
00078 
00079     /**
00080       @return content stored in attribute
00081     */
00082     QByteArray getContent() const;
00083 
00084     /**
00085       @return true if file content is downloaded and stored
00086     */
00087     bool contentIsDownloaded() const;
00088 
00089     /**
00090       Writes content stored in a file
00091       @param FilePath Path where the file will be written
00092     */
00093     void writeToFile(const std::string& FilePath) const;
00094 
00095   // List of created Qt signals
00096   signals:
00097 
00098     /**
00099       Signal emitted when store of downloaded file content is finished
00100     */
00101     void processFinished();
00102 
00103   // List of created Qt slots
00104   public slots:
00105 
00106     /**
00107       Stores file content downloaded in attribute
00108       @param[in] Reply Reply of sent request
00109     */
00110     void downloadFinished(QNetworkReply *Reply);
00111 
00112 
00113   public:
00114 
00115     /**
00116      Downloads URL contents to string
00117      @param[in] URL The URL for the download
00118      @param[out] Contents The string containing the downloaded contents
00119     */
00120     static bool downloadToString(const std::string& URL, std::string& Contents);
00121 
00122     /**
00123      Downloads URL contents to file
00124      @param[in] URL The URL for the download
00125      @param[out] FilePath The path of the file to store the downloaded contents
00126     */
00127     static bool downloadToFile(const std::string& URL, const std::string& FilePath);
00128 
00129 };
00130 
00131 
00132 } } // namespaces
00133 
00134 
00135 
00136 #endif /* __FILEDOWNLOADER_HPP__ */
00137 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines