• Skip to content
  • Skip to link menu
KDE 4.6 API Reference
  • KDE API Reference
  • kdelibs
  • KDE Home
  • 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 #include <QtCore/QSet>
00032 
00033 class KConfig;
00034 class KCookieJar;
00035 class KHttpCookie;
00036 class KHttpCookieList;
00037 
00038 typedef KHttpCookie *KHttpCookiePtr;
00039 
00040 enum KCookieAdvice
00041 {
00042     KCookieDunno=0,
00043     KCookieAccept,
00044     KCookieReject,
00045     KCookieAsk
00046 };
00047 
00048 class KHttpCookie
00049 {
00050     friend class KCookieJar;
00051     friend class KHttpCookieList;
00052     friend QDebug operator<<(QDebug, const KHttpCookie&); // for cookieStr()
00053 
00054 protected:
00055     QString mHost;
00056     QString mDomain;
00057     QString mPath;
00058     QString mName;
00059     QString mValue;
00060     qint64  mExpireDate;
00061     int     mProtocolVersion;
00062     bool    mSecure;
00063     bool    mCrossDomain;
00064     bool    mHttpOnly;
00065     bool    mExplicitPath;
00066     QList<long> mWindowIds;
00067     QList<int> mPorts;
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     const QList<int> &ports() const { return mPorts; }
00091     void fixDomain(const QString &domain) { mDomain = domain; }
00092     qint64 expireDate() const { return mExpireDate; }
00093     int protocolVersion() const { return mProtocolVersion; }
00094     bool isSecure() const { return mSecure; }
00099     bool isExpired(qint64 currentDate = -1) const;
00100     bool isCrossDomain() const { return mCrossDomain; }
00101     bool isHttpOnly() const { return mHttpOnly; }
00102     bool hasExplicitPath() const { return mExplicitPath; }
00103     bool match(const QString &fqdn, const QStringList &domainList, const QString &path, int port=-1) const;
00104 };
00105 
00106 QDebug operator<<(QDebug, const KHttpCookie&);
00107 
00108 class KHttpCookieList : public QList<KHttpCookie>
00109 {
00110 public:
00111     KHttpCookieList() : QList<KHttpCookie>(), advice( KCookieDunno )
00112     { }
00113     virtual ~KHttpCookieList() { }
00114 
00115     KCookieAdvice getAdvice() const { return advice; }
00116     void setAdvice(KCookieAdvice _advice) { advice = _advice; }
00117 
00118 private:
00119     KCookieAdvice advice;
00120 };
00121 
00122 QDebug operator<<(QDebug, const KHttpCookieList&);
00123 
00124 class KCookieJar
00125 {
00126 public:
00132     KCookieJar();
00133 
00139     ~KCookieJar();
00140 
00144     bool changed() const { return m_cookiesChanged || m_configChanged; }
00145 
00149     bool saveCookies(const QString &_filename);
00150 
00154     bool loadCookies(const QString &_filename);
00155 
00159     void saveConfig(KConfig *_config);
00160 
00164     void loadConfig(KConfig *_config, bool reparse = false);
00165 
00177     QString findCookies(const QString &_url, bool useDOMFormat, long windowId, KHttpCookieList *pendingCookies=0);
00178 
00187     KHttpCookieList makeCookies(const QString &_url, const QByteArray &cookie_headers, long windowId);
00188 
00197     KHttpCookieList makeDOMCookies(const QString &_url, const QByteArray &cookie_domstr, long windowId);
00198 
00202     void addCookie(KHttpCookie &cookie);
00203 
00215     KCookieAdvice cookieAdvice(KHttpCookie& cookie);
00216 
00226     KCookieAdvice getDomainAdvice(const QString &_domain);
00227 
00238     void setDomainAdvice(const QString &_domain, KCookieAdvice _advice);
00239 
00250     void setDomainAdvice(const KHttpCookie& _cookie, KCookieAdvice _advice);
00251 
00262     KCookieAdvice getGlobalAdvice() { return m_globalAdvice; }
00263 
00274     void setGlobalAdvice(KCookieAdvice _advice);
00275 
00282     const QStringList& getDomainList();
00283 
00287     KHttpCookieList *getCookieList(const QString & _domain,
00288                                    const QString& _fqdn );
00289 
00297     void eatCookie(KHttpCookieList::iterator cookieIterator);
00298 
00302     void eatCookiesForDomain(const QString &domain);
00303 
00307     void eatAllCookies();
00308 
00313     void eatSessionCookies( long windowId );
00314 
00319     void eatSessionCookies( const QString& fqdn, long windowId, bool isFQDN = true );
00320 
00324     static bool parseUrl(const QString &_url,
00325                          QString &_fqdn,
00326                          QString &_path,
00327                          int *port = 0);
00328 
00334     void extractDomains(const QString &_fqdn,
00335                         QStringList &_domainList) const;
00336 
00337     static QString adviceToStr(KCookieAdvice _advice);
00338     static KCookieAdvice strToAdvice(const QString &_str);
00339 
00340     enum KCookieDefaultPolicy {
00341         ApplyToShownCookiesOnly = 0,
00342         ApplyToCookiesFromDomain = 1,
00343         ApplyToAllCookies = 2
00344     };
00346     KCookieDefaultPolicy preferredDefaultPolicy() const { return m_preferredPolicy; }
00347 
00349     bool showCookieDetails () const { return m_showCookieDetails; }
00350 
00354      void setPreferredDefaultPolicy (KCookieDefaultPolicy value) { m_preferredPolicy = value; }
00355 
00360      void setShowCookieDetails (bool value) { m_showCookieDetails = value; }
00361 
00362 protected:
00363      void stripDomain(const QString &_fqdn, QString &_domain);
00364      QString stripDomain(const KHttpCookie& cookie);
00365 
00366 protected:
00367     QStringList m_domainList;    
00368     KCookieAdvice m_globalAdvice;
00369     QHash<QString, KHttpCookieList*> m_cookieDomains;
00370     QSet<QString> m_twoLevelTLD;
00371     QSet<QString> m_gTLDs;
00372 
00373     bool m_configChanged;
00374     bool m_cookiesChanged;
00375     bool m_showCookieDetails;
00376     bool m_rejectCrossDomainCookies;
00377     bool m_autoAcceptSessionCookies;
00378     bool m_ignoreCookieExpirationDate;
00379 
00380     KCookieDefaultPolicy m_preferredPolicy;
00381 };
00382 #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
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver
Generated for kdelibs by doxygen 1.7.3
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