• Skip to content
  • Skip to link menu
KDE 4.1 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     time_t  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                          time_t _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     time_t  expireDate() const { return mExpireDate; }
00092     int     protocolVersion() const { return mProtocolVersion; }
00093     bool    isSecure() const { return mSecure; }
00094     bool    isExpired(time_t currentDate) const;
00095     bool    isCrossDomain() const { return mCrossDomain; }
00096     bool    isHttpOnly() const { return mHttpOnly; }
00097     bool    hasExplicitPath() const { return mExplicitPath; }
00098     bool    match(const QString &fqdn, const QStringList &domainList, const QString &path) const;
00099 };
00100 
00101 QDebug operator<<(QDebug, const KHttpCookie&);
00102 
00103 class KHttpCookieList : public QList<KHttpCookie>
00104 {
00105 public:
00106     KHttpCookieList() : QList<KHttpCookie>(), advice( KCookieDunno )
00107     { }
00108     virtual ~KHttpCookieList() { }
00109 
00110     KCookieAdvice getAdvice() const { return advice; }
00111     void setAdvice(KCookieAdvice _advice) { advice = _advice; }
00112 
00113 private:
00114     KCookieAdvice advice;
00115 };
00116 
00117 QDebug operator<<(QDebug, const KHttpCookieList&);
00118 
00119 class KCookieJar
00120 {
00121 public:
00127     KCookieJar();
00128 
00134     ~KCookieJar();
00135 
00139     bool changed() const { return m_cookiesChanged || m_configChanged; }
00140 
00144     bool saveCookies(const QString &_filename);
00145 
00149     bool loadCookies(const QString &_filename);
00150 
00154     void saveConfig(KConfig *_config);
00155 
00159     void loadConfig(KConfig *_config, bool reparse = false);
00160 
00172     QString findCookies(const QString &_url, bool useDOMFormat, long windowId, KHttpCookieList *pendingCookies=0);
00173 
00182     KHttpCookieList makeCookies(const QString &_url, const QByteArray &cookie_headers, long windowId);
00183 
00192     KHttpCookieList makeDOMCookies(const QString &_url, const QByteArray &cookie_domstr, long windowId);
00193 
00197     void addCookie(KHttpCookie &cookie);
00198 
00210     KCookieAdvice cookieAdvice(KHttpCookie& cookie);
00211 
00221     KCookieAdvice getDomainAdvice(const QString &_domain);
00222 
00233     void setDomainAdvice(const QString &_domain, KCookieAdvice _advice);
00234 
00245     void setDomainAdvice(const KHttpCookie& _cookie, KCookieAdvice _advice);
00246 
00257     KCookieAdvice getGlobalAdvice() { return m_globalAdvice; }
00258 
00269     void setGlobalAdvice(KCookieAdvice _advice);
00270 
00277     const QStringList& getDomainList();
00278 
00282     KHttpCookieList *getCookieList(const QString & _domain,
00283                                    const QString& _fqdn );
00284 
00292     void eatCookie(KHttpCookieList::iterator cookieIterator);
00293 
00297     void eatCookiesForDomain(const QString &domain);
00298 
00302     void eatAllCookies();
00303 
00308     void eatSessionCookies( long windowId );
00309 
00314     void eatSessionCookies( const QString& fqdn, long windowId, bool isFQDN = true );
00315 
00319     static bool parseUrl(const QString &_url,
00320                          QString &_fqdn,
00321                          QString &_path);
00322 
00328     void extractDomains(const QString &_fqdn,
00329                         QStringList &_domainList) const;
00330 
00331     static QString adviceToStr(KCookieAdvice _advice);
00332     static KCookieAdvice strToAdvice(const QString &_str);
00333 
00335     int preferredDefaultPolicy() const { return m_preferredPolicy; }
00336 
00338     bool showCookieDetails () const { return m_showCookieDetails; }
00339 
00343      void setPreferredDefaultPolicy (int value) { m_preferredPolicy = value; }
00344 
00349      void setShowCookieDetails (bool value) { m_showCookieDetails = value; }
00350 
00351 protected:
00352      void stripDomain(const QString &_fqdn, QString &_domain);
00353      QString stripDomain(const KHttpCookie& cookie);
00354 
00355 protected:
00356     QStringList m_domainList;
00357     KCookieAdvice m_globalAdvice;
00358     QHash<QString, KHttpCookieList*> m_cookieDomains;
00359     QHash<QString, int> m_twoLevelTLD;
00360 
00361     bool m_configChanged;
00362     bool m_cookiesChanged;
00363     bool m_showCookieDetails;
00364     bool m_rejectCrossDomainCookies;
00365     bool m_autoAcceptSessionCookies;
00366     bool m_ignoreCookieExpirationDate;
00367 
00368     int m_preferredPolicy;
00369 };
00370 #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
  • Kross
  • KUtils
  • Nepomuk
  • Solid
  • Sonnet
  • ThreadWeaver
Generated for kdelibs by doxygen 1.5.4
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