File indexing completed on 2024-04-14 15:46:43

0001 /*  This file is part of inqludeclient
0002  *  Copyright 2014  David Faure  <faure@kde.org>
0003  *
0004  *  This library is free software; you can redistribute it and/or modify
0005  *  it under the terms of the GNU Lesser General Public License as published by
0006  *  the Free Software Foundation; either version 2 of the License or ( at
0007  *  your option ) version 3 or, at the discretion of KDE e.V. ( which shall
0008  *  act as a proxy as in section 14 of the GPLv3 ), any later version.
0009  *
0010  *  This library is distributed in the hope that it will be useful,
0011  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
0012  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0013  *  Library General Public License for more details.
0014  *
0015  *  You should have received a copy of the GNU Lesser General Public License
0016  *  along with this library; see the file COPYING.LIB.  If not, write to
0017  *  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
0018  *  Boston, MA 02110-1301, USA.
0019  */
0020 
0021 #include "dataprovider.h"
0022 #include "filedataprovider.h"
0023 #include "httpdataprovider.h"
0024 
0025 #include <QStandardPaths>
0026 #include <QDateTime>
0027 #include <QFileInfo>
0028 
0029 DataProvider::Ptr DataProvider::createProvider()
0030 {
0031     // Check cache
0032     const QString cache = cacheFile();
0033     QFileInfo info(cache);
0034     if (info.exists() && info.lastModified().daysTo(QDateTime::currentDateTime()) < 1) {
0035         // Exists and is recent, use that
0036         return Ptr(new FileDataProvider(cacheFile()));
0037     }
0038 
0039     // Download file
0040     return Ptr(new HttpDataProvider(cacheFile()));
0041 }
0042 
0043 QString DataProvider::cacheFile()
0044 {
0045     return QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + "/inqlude-all.json";
0046 }