• Skip to content
  • Skip to link menu
KDE 4.3 API Reference
  • KDE API Reference
  • kdelibs
  • Sitemap
  • Contact Us
 

KIOSlave

kcookiejar.h

Go to the documentation of this file.
00001 /*
00002     This file is part of the KDE File Manager
00003 
00004     Copyright (C) 1998 Waldo Bastian (bastian@kde.org)
00005 
00006     This library is free software; you can redistribute it and/or
00007     modify it under the terms of the GNU Library General Public License
00008     as published by the Free Software Foundation; either
00009     version 2, or (at your option) version 3.
00010 
00011     This software is distributed in the hope that it will be useful,
00012     but WITHOUT ANY WARRANTY; without even the implied warranty of
00013     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014     General Public License for more details.
00015 
00016     You should have received a copy of the GNU General Public License
00017     along with this library; see the file COPYING. If not, write to
00018     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00019     Boston, MA 02110-1301, USA.
00020 */
00021 //----------------------------------------------------------------------------
00022 //
00023 // KDE File Manager -- HTTP Cookies
00024 
00025 #ifndef KCOOKIEJAR_H
00026 #define KCOOKIEJAR_H
00027 
00028 #include <QtCore/QString>
00029 #include <QtCore/QStringList>
00030 #include <QtCore/QHash>
00031 
00032 #include <time.h>
00033 
00034 class KConfig;
00035 class KCookieJar;
00036 class KHttpCookie;
00037 class KHttpCookieList;
00038 
00039 typedef KHttpCookie *KHttpCookiePtr;
00040 
00041 enum KCookieAdvice
00042 {
00043     KCookieDunno=0,
00044     KCookieAccept,
00045     KCookieReject,
00046     KCookieAsk
00047 };
00048 
00049 class KHttpCookie
00050 {
00051     friend class KCookieJar;
00052     friend class KHttpCookieList;
00053     friend QDebug operator<<(QDebug, const KHttpCookie&); // for cookieStr()
00054 
00055 protected:
00056     QString mHost;
00057     QString mDomain;
00058     QString mPath;
00059     QString mName;
00060     QString mValue;
00061     qint64  mExpireDate;
00062     int     mProtocolVersion;
00063     bool    mSecure;
00064     bool    mCrossDomain;
00065     bool    mHttpOnly;
00066     bool    mExplicitPath;
00067     QList<long> mWindowIds;
00068 
00069     QString cookieStr(bool useDOMFormat) const;
00070 
00071 public:
00072     explicit KHttpCookie(const QString &_host=QString(),
00073                          const QString &_domain=QString(),
00074                          const QString &_path=QString(),
00075                          const QString &_name=QString(),
00076                          const QString &_value=QString(),
00077                          qint64 _expireDate=0,
00078                          int _protocolVersion=0,
00079                          bool _secure = false,
00080                          bool _httpOnly = false,
00081                          bool _explicitPath = false);
00082 
00083     QString domain() const { return mDomain; }
00084     QString host() const { return mHost; }
00085     QString path() const { return mPath; }
00086     QString name() const { return mName; }
00087     QString value() const { return mValue; }
00088     QList<long> &windowIds() { return mWindowIds; }
00089     const QList<long> &windowIds() const { return mWindowIds; }
00090     void    fixDomain(const QString &domain) { mDomain = domain; }
00091     qint64  expireDate() const { return mExpireDate; }
00092     int     protocolVersion() const { return mProtocolVersion; }
00093     bool    isSecure() const { return mSecure; }
00098     bool    isExpired(qint64 currentDate = -1) const;
00099     bool    isCrossDomain() const { return mCrossDomain; }
00100     bool    isHttpOnly() const { return mHttpOnly; }
00101     bool    hasExplicitPath() const { return mExplicitPath; }
00102     bool    match(const QString &fqdn, const QStringList &domainList, const QString &path) const;
00103 };
00104 
00105 QDebug operator<<(QDebug, const KHttpCookie&);
00106 
00107 class KHttpCookieList : public QList<KHttpCookie>
00108 {
00109 public:
00110     KHttpCookieList() : QList<KHttpCookie>(), advice( KCookieDunno )
00111     { }
00112     virtual ~KHttpCookieList() { }
00113 
00114     KCookieAdvice getAdvice() const { return advice; }
00115     void setAdvice(KCookieAdvice _advice) { advice = _advice; }
00116 
00117 private:
00118     KCookieAdvice advice;
00119 };
00120 
00121 QDebug operator<<(QDebug, const KHttpCookieList&);
00122 
00123 class KCookieJar
00124 {
00125 public:
00131     KCookieJar();
00132 
00138     ~KCookieJar();
00139 
00143     bool changed() const { return m_cookiesChanged || m_configChanged; }
00144 
00148     bool saveCookies(const QString &_filename);
00149 
00153     bool loadCookies(const QString &_filename);
00154 
00158     void saveConfig(KConfig *_config);
00159 
00163     void loadConfig(KConfig *_config, bool reparse = false);
00164 
00176     QString findCookies(const QString &_url, bool useDOMFormat, long windowId, KHttpCookieList *pendingCookies=0);
00177 
00186     KHttpCookieList makeCookies(const QString &_url, const QByteArray &cookie_headers, long windowId);
00187 
00196     KHttpCookieList makeDOMCookies(const QString &_url, const QByteArray &cookie_domstr, long windowId);
00197 
00201     void addCookie(KHttpCookie &cookie);
00202 
00214     KCookieAdvice cookieAdvice(KHttpCookie& cookie);
00215 
00225     KCookieAdvice getDomainAdvice(const QString &_domain);
00226 
00237     void setDomainAdvice(const QString &_domain, KCookieAdvice _advice);
00238 
00249     void setDomainAdvice(const KHttpCookie& _cookie, KCookieAdvice _advice);
00250 
00261     KCookieAdvice getGlobalAdvice() { return m_globalAdvice; }
00262 
00273     void setGlobalAdvice(KCookieAdvice _advice);
00274 
00281     const QStringList& getDomainList();
00282 
00286     KHttpCookieList *getCookieList(const QString & _domain,
00287                                    const QString& _fqdn );
00288 
00296     void eatCookie(KHttpCookieList::iterator cookieIterator);
00297 
00301     void eatCookiesForDomain(const QString &domain);
00302 
00306     void eatAllCookies();
00307 
00312     void eatSessionCookies( long windowId );
00313 
00318     void eatSessionCookies( const QString& fqdn, long windowId, bool isFQDN = true );
00319 
00323     static bool parseUrl(const QString &_url,
00324                          QString &_fqdn,
00325                          QString &_path);
00326 
00332     void extractDomains(const QString &_fqdn,
00333                         QStringList &_domainList) const;
00334 
00335     static QString adviceToStr(KCookieAdvice _advice);
00336     static KCookieAdvice strToAdvice(const QString &_str);
00337 
00338     enum KCookieDefaultPolicy {
00339         ApplyToShownCookiesOnly = 0,
00340         ApplyToCookiesFromDomain = 1,
00341         ApplyToAllCookies = 2
00342     };
00344     KCookieDefaultPolicy preferredDefaultPolicy() const { return m_preferredPolicy; }
00345 
00347     bool showCookieDetails () const { return m_showCookieDetails; }
00348 
00352      void setPreferredDefaultPolicy (KCookieDefaultPolicy value) { m_preferredPolicy = value; }
00353 
00358      void setShowCookieDetails (bool value) { m_showCookieDetails = value; }
00359 
00360 protected:
00361      void stripDomain(const QString &_fqdn, QString &_domain);
00362      QString stripDomain(const KHttpCookie& cookie);
00363 
00364 protected:
00365     QStringList m_domainList;
00366     KCookieAdvice m_globalAdvice;
00367     QHash<QString, KHttpCookieList*> m_cookieDomains;
00368     QHash<QString, int> m_twoLevelTLD;
00369 
00370     bool m_configChanged;
00371     bool m_cookiesChanged;
00372     bool m_showCookieDetails;
00373     bool m_rejectCrossDomainCookies;
00374     bool m_autoAcceptSessionCookies;
00375     bool m_ignoreCookieExpirationDate;
00376 
00377     KCookieDefaultPolicy m_preferredPolicy;
00378 };
00379 #endif

KIOSlave

Skip menu "KIOSlave"
  • Main Page
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Class Members
  • Related Pages

kdelibs

Skip menu "kdelibs"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • Kate
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver
Generated for kdelibs by doxygen 1.6.1
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal