File indexing completed on 2023-09-24 04:08:42
0001 /* 0002 This file is part of the KDE project 0003 SPDX-FileCopyrightText: 2000 Dawit Alemayehu <adawit@kde.org> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #include "sessiondata_p.h" 0009 0010 #include <QDir> 0011 #include <QStandardPaths> 0012 #include <QTextCodec> 0013 0014 #include <KConfigGroup> 0015 #include <KLocalizedString> 0016 #include <KSharedConfig> 0017 #include <kprotocolmanager.h> 0018 0019 #include "http_worker_defaults.h" 0020 #include "workerconfig.h" 0021 0022 namespace KIO 0023 { 0024 /********************************* SessionData ****************************/ 0025 0026 class SessionData::SessionDataPrivate 0027 { 0028 public: 0029 SessionDataPrivate() 0030 { 0031 useCookie = true; 0032 initDone = false; 0033 } 0034 0035 bool initDone; 0036 bool useCookie; 0037 QString charsets; 0038 QString language; 0039 }; 0040 0041 SessionData::SessionData() 0042 : d(new SessionDataPrivate) 0043 { 0044 } 0045 0046 SessionData::~SessionData() = default; 0047 0048 void SessionData::configDataFor(MetaData &configData, const QString &proto, const QString &) 0049 { 0050 if ((proto.startsWith(QLatin1String("http"), Qt::CaseInsensitive)) || (proto.startsWith(QLatin1String("webdav"), Qt::CaseInsensitive))) { 0051 if (!d->initDone) { 0052 reset(); 0053 } 0054 0055 // These might have already been set so check first 0056 // to make sure that we do not trumpt settings sent 0057 // by apps or end-user. 0058 if (configData[QStringLiteral("Cookies")].isEmpty()) { 0059 configData[QStringLiteral("Cookies")] = d->useCookie ? QStringLiteral("true") : QStringLiteral("false"); 0060 } 0061 if (configData[QStringLiteral("Languages")].isEmpty()) { 0062 configData[QStringLiteral("Languages")] = d->language; 0063 } 0064 if (configData[QStringLiteral("Charsets")].isEmpty()) { 0065 configData[QStringLiteral("Charsets")] = d->charsets; 0066 } 0067 if (configData[QStringLiteral("CacheDir")].isEmpty()) { 0068 const QString httpCacheDir = QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation) + QLatin1String("/kio_http"); 0069 QDir().mkpath(httpCacheDir); 0070 configData[QStringLiteral("CacheDir")] = httpCacheDir; 0071 } 0072 if (configData[QStringLiteral("UserAgent")].isEmpty()) { 0073 configData[QStringLiteral("UserAgent")] = KProtocolManager::defaultUserAgent(); 0074 } 0075 } 0076 } 0077 0078 void SessionData::reset() 0079 { 0080 d->initDone = true; 0081 // Get Cookie settings... 0082 d->useCookie = KSharedConfig::openConfig(QStringLiteral("kcookiejarrc"), KConfig::NoGlobals)->group("Cookie Policy").readEntry("Cookies", true); 0083 0084 d->language = KProtocolManager::acceptLanguagesHeader(); 0085 d->charsets = QString::fromLatin1(QTextCodec::codecForLocale()->name()).toLower(); 0086 KProtocolManager::reparseConfiguration(); 0087 } 0088 0089 } 0090 0091 #include "moc_sessiondata_p.cpp"