• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • kioslave/http
 

kioslave/http

kcookiejar.h
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 General Public License
00008     version 2 as published by the Free Software Foundation.
00009 
00010     This software is distributed in the hope that it will be useful,
00011     but WITHOUT ANY WARRANTY; without even the implied warranty of
00012     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013     General Public License for more details.
00014 
00015     You should have received a copy of the GNU General Public License
00016     along with this library; see the file COPYING. If not, write to
00017     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00018     Boston, MA 02110-1301, USA.
00019 */
00020 //----------------------------------------------------------------------------
00021 //
00022 // KDE File Manager -- HTTP Cookies
00023 // $Id$
00024 
00025 #ifndef KCOOKIEJAR_H
00026 #define KCOOKIEJAR_H
00027 
00028 #include <tqstring.h>
00029 #include <tqstringlist.h>
00030 #include <tqdict.h>
00031 #include <tqptrlist.h>
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 
00054 protected:
00055     TQString mHost;
00056     TQString mDomain;
00057     TQString mPath;
00058     TQString mName;
00059     TQString mValue;
00060     time_t  mExpireDate;
00061     int     mProtocolVersion;
00062     bool    mSecure;
00063     bool    mCrossDomain;
00064     bool    mHttpOnly;
00065     bool    mExplicitPath;
00066     TQValueList<long> mWindowIds;
00067 
00068     TQString cookieStr(bool useDOMFormat);
00069 
00070 public:
00071     KHttpCookie(const TQString &_host=TQString::null,
00072                 const TQString &_domain=TQString::null,
00073                 const TQString &_path=TQString::null,
00074                 const TQString &_name=TQString::null,
00075                 const TQString &_value=TQString::null,
00076                 time_t _expireDate=0,
00077                 int _protocolVersion=0,
00078                 bool _secure = false,
00079                 bool _httpOnly = false,
00080                 bool _explicitPath = false);
00081 
00082     TQString domain(void) { return mDomain; }
00083     TQString host(void) { return mHost; }
00084     TQString path(void) { return mPath; }
00085     TQString name(void) { return mName; }
00086     TQString value(void) { return mValue; }
00087     TQValueList<long> &windowIds(void) { return mWindowIds; }
00088     void    fixDomain(const TQString &domain) { mDomain = domain; }
00089     time_t  expireDate(void) { return mExpireDate; }
00090     int     protocolVersion(void) { return mProtocolVersion; }
00091     bool    isSecure(void) { return mSecure; }
00092     bool    isExpired(time_t currentDate);
00093     bool    isCrossDomain(void) { return mCrossDomain; }
00094     bool    isHttpOnly(void) { return mHttpOnly; }
00095     bool    hasExplicitPath(void) { return mExplicitPath; }
00096     bool    match(const TQString &fqdn, const TQStringList &domainList, const TQString &path);
00097 };
00098 
00099 class KHttpCookieList : public TQPtrList<KHttpCookie>
00100 {
00101 public:
00102     KHttpCookieList() : TQPtrList<KHttpCookie>(), advice( KCookieDunno )
00103     { }
00104     virtual ~KHttpCookieList() { }
00105 
00106     virtual int compareItems( void * item1, void * item2);
00107     KCookieAdvice getAdvice(void) { return advice; }
00108     void setAdvice(KCookieAdvice _advice) { advice = _advice; }
00109 
00110 private:
00111     KCookieAdvice advice;
00112 };
00113 
00114 class KCookieJar
00115 {
00116 public:
00122     KCookieJar();
00123 
00129     ~KCookieJar();
00130 
00134     bool changed() const { return m_cookiesChanged || m_configChanged; }
00135 
00139     bool saveCookies(const TQString &_filename);
00140 
00144     bool loadCookies(const TQString &_filename);
00145 
00149     void saveConfig(KConfig *_config);
00150 
00154     void loadConfig(KConfig *_config, bool reparse = false);
00155 
00167     TQString findCookies(const TQString &_url, bool useDOMFormat, long windowId, KHttpCookieList *pendingCookies=0);
00168 
00177     KHttpCookieList makeCookies(const TQString &_url, const TQCString &cookie_headers, long windowId);
00178 
00187     KHttpCookieList makeDOMCookies(const TQString &_url, const TQCString &cookie_domstr, long windowId);
00188 
00194     void addCookie(KHttpCookiePtr &cookiePtr);
00195 
00205     KCookieAdvice cookieAdvice(KHttpCookiePtr cookiePtr);
00206 
00216     KCookieAdvice getDomainAdvice(const TQString &_domain);
00217 
00228     void setDomainAdvice(const TQString &_domain, KCookieAdvice _advice);
00229 
00240     void setDomainAdvice(KHttpCookiePtr _cookie, KCookieAdvice _advice);
00241 
00252     KCookieAdvice getGlobalAdvice() { return m_globalAdvice; }
00253 
00264     void setGlobalAdvice(KCookieAdvice _advice);
00265 
00272     const TQStringList& getDomainList();
00273 
00277     const KHttpCookieList *getCookieList(const TQString & _domain,
00278                                          const TQString& _fqdn );
00279 
00287     void eatCookie(KHttpCookiePtr cookiePtr);
00288 
00292     void eatCookiesForDomain(const TQString &domain);
00293 
00297     void eatAllCookies();
00298 
00303     void eatSessionCookies( long windowId );
00304 
00309     void eatSessionCookies( const TQString& fqdn, long windowId, bool isFQDN = true );
00310 
00314     static bool parseURL(const TQString &_url,
00315                          TQString &_fqdn,
00316                          TQString &_path);
00317 
00323     void extractDomains(const TQString &_fqdn,
00324                         TQStringList &_domainList);
00325 
00326     static TQString adviceToStr(KCookieAdvice _advice);
00327     static KCookieAdvice strToAdvice(const TQString &_str);
00328 
00330     int preferredDefaultPolicy() const { return m_preferredPolicy; }
00331 
00333     bool showCookieDetails () const { return m_showCookieDetails; }
00334 
00338      void setPreferredDefaultPolicy (int value) { m_preferredPolicy = value; }
00339 
00344      void setShowCookieDetails (bool value) { m_showCookieDetails = value; }
00345 
00346 protected:
00347      void stripDomain(const TQString &_fqdn, TQString &_domain);
00348      TQString stripDomain( KHttpCookiePtr cookiePtr);
00349 
00350 protected:
00351     TQStringList m_domainList;
00352     KCookieAdvice m_globalAdvice;
00353     TQDict<KHttpCookieList> m_cookieDomains;
00354     TQDict<int> m_twoLevelTLD;
00355 
00356     bool m_configChanged;
00357     bool m_cookiesChanged;
00358     bool m_showCookieDetails;
00359     bool m_rejectCrossDomainCookies;
00360     bool m_autoAcceptSessionCookies;
00361     bool m_ignoreCookieExpirationDate;
00362 
00363     int m_preferredPolicy;
00364 };
00365 #endif

kioslave/http

Skip menu "kioslave/http"
  • Main Page
  • Alphabetical List
  • Class List
  • File List

kioslave/http

Skip menu "kioslave/http"
  • arts
  • dcop
  • dnssd
  • interfaces
  •     interface
  •     library
  •   kspeech
  •   ktexteditor
  • kabc
  • kate
  • kcmshell
  • kdecore
  • kded
  • kdefx
  • kdeprint
  • kdesu
  • kdeui
  • kdoctools
  • khtml
  • kimgio
  • kinit
  • kio
  •   bookmarks
  •   httpfilter
  •   kfile
  •   kio
  •   kioexec
  •   kpasswdserver
  •   kssl
  • kioslave
  •   http
  • kjs
  • kmdi
  •   kmdi
  • knewstuff
  • kparts
  • krandr
  • kresources
  • kspell2
  • kunittest
  • kutils
  • kwallet
  • libkmid
  • libkscreensaver
Generated for kioslave/http by doxygen 1.7.6.1
This website is maintained by Timothy Pearson.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. |