• Skip to content
  • Skip to link menu
KDE 4.0 API Reference
  • KDE API Reference
  • kdenetwork
  • Sitemap
  • Contact Us
 

kopete/protocols/messenger/libpapillon

httptransfer.cpp

Go to the documentation of this file.
00001 /*
00002    httptransfer.h - HTTP transfer
00003 
00004    Copyright (c) 2006 by Michaƫl Larouche <larouche@kde.org>
00005 
00006    *************************************************************************
00007    *                                                                       *
00008    * This library is free software; you can redistribute it and/or         *
00009    * modify it under the terms of the GNU Lesser General Public            *
00010    * License as published by the Free Software Foundation; either          *
00011    * version 2 of the License, or (at your option) any later version.      *
00012    *                                                                       *
00013    *************************************************************************
00014 */
00015 #include "Papillon/Http/Transfer"
00016 
00017 #include <QtNetwork/QHttpHeader>
00018 #include <QtNetwork/QHttpRequestHeader>
00019 #include <QtNetwork/QHttpResponseHeader>
00020 
00021 namespace Papillon
00022 {
00023 
00024 class HttpTransfer::Private
00025 {
00026 public:
00027     Private()
00028      : type(HttpTransfer::HttpRequest), httpHeader(0)
00029     {}
00030 
00031     ~Private()
00032     {
00033         delete httpHeader;
00034     }
00035 
00036     HttpTransfer::HttpTransferType type;
00037     // We use base class as a pointer for polymorphist.
00038     QHttpHeader *httpHeader;
00039     QByteArray body;
00040 };
00041 
00042 HttpTransfer::HttpTransfer(HttpTransferType type)
00043  : d(new Private)
00044 {
00045     d->type = type;
00046     switch(type)
00047     {
00048         case HttpRequest:
00049             d->httpHeader = new QHttpRequestHeader;
00050             break;
00051         case HttpResponse:
00052             d->httpHeader = new QHttpResponseHeader;
00053             break;
00054     }
00055 }
00056 
00057 HttpTransfer::~HttpTransfer()
00058 {
00059     delete d;
00060 }
00061 
00062 HttpTransfer::HttpTransferType HttpTransfer::type() const
00063 {
00064     return d->type;
00065 }
00066 
00067 bool HttpTransfer::isValid() const
00068 {
00069     return d->httpHeader->isValid();
00070 }
00071 
00072 uint HttpTransfer::contentLength() const
00073 {
00074     return d->httpHeader->contentLength();
00075 }
00076 
00077 QString HttpTransfer::contentType() const
00078 {
00079     return d->httpHeader->contentType();
00080 }
00081 
00082 void HttpTransfer::setContentType(const QString &contentType)
00083 {
00084     d->httpHeader->setContentType(contentType);
00085 }
00086 
00087 void HttpTransfer::setRequest(const QString &method, const QString &path, int majorVer, int minorVer)
00088 {
00089     Q_ASSERT(type() == HttpTransfer::HttpRequest);
00090 
00091     static_cast<QHttpRequestHeader*>(d->httpHeader)->setRequest(method, path, majorVer, minorVer);
00092 }
00093 
00094 void HttpTransfer::setHttpHeader(const QHttpRequestHeader &header)
00095 {
00096     Q_ASSERT(type() == HttpTransfer::HttpRequest);
00097 
00098     // Operator= is not virtual so we need to cast to derivate here.
00099     QHttpRequestHeader *requestHeader = static_cast<QHttpRequestHeader*>(d->httpHeader);
00100     requestHeader->operator=(header);
00101 }
00102 
00103 void HttpTransfer::setHttpHeader(const QHttpResponseHeader &header)
00104 {
00105     Q_ASSERT(type() == HttpTransfer::HttpResponse);
00106 
00107     // Operator= is not virtual so we need to cast to derivate here.
00108     QHttpResponseHeader *responseHeader = static_cast<QHttpResponseHeader*>(d->httpHeader);
00109     responseHeader->operator=(header);
00110 }
00111 
00112 bool HttpTransfer::hasContentLength() const
00113 {
00114     return d->httpHeader->hasContentLength();
00115 }
00116 
00117 bool HttpTransfer::hasContentType() const
00118 {
00119     return d->httpHeader->hasContentType();
00120 }
00121 
00122 bool HttpTransfer::hasKey(const QString &key) const
00123 {
00124     return d->httpHeader->hasKey(key.toLower());
00125 }
00126 
00127 QString HttpTransfer::value(const QString & key) const
00128 {
00129     return d->httpHeader->value(key.toLower());
00130 }
00131 
00132 QList<QPair<QString, QString> > HttpTransfer::values() const
00133 {
00134     return d->httpHeader->values();
00135 }
00136 
00137 void HttpTransfer::setValue(const QString & key, const QString &value)
00138 {
00139     d->httpHeader->setValue(key.toLower(), value);
00140 }
00141 
00142 void HttpTransfer::setValues(const QList<QPair<QString, QString> > &values)
00143 {
00144     d->httpHeader->setValues(values);
00145 }
00146 
00147 int HttpTransfer::statusCode() const
00148 {
00149     Q_ASSERT(d->type == HttpResponse);
00150 
00151     return static_cast<QHttpResponseHeader*>(d->httpHeader)->statusCode();
00152 }
00153 
00154 QString HttpTransfer::method() const
00155 {
00156     Q_ASSERT(d->type == HttpRequest);
00157 
00158     return static_cast<QHttpRequestHeader*>(d->httpHeader)->method();
00159 }
00160 
00161 QString HttpTransfer::path() const
00162 {
00163     Q_ASSERT(d->type == HttpRequest);
00164 
00165     return static_cast<QHttpRequestHeader*>(d->httpHeader)->path();
00166 }
00167 
00168 QByteArray HttpTransfer::body() const
00169 {
00170     return d->body;
00171 }
00172 
00173 void HttpTransfer::setBody(const QByteArray &body)
00174 {
00175     d->body = body;
00176     d->httpHeader->setContentLength( body.size() );
00177 }
00178 
00179 QByteArray HttpTransfer::toRawCommand()
00180 {
00181     QByteArray result;
00182 
00183     result += d->httpHeader->toString().toUtf8();
00184     result += d->body;
00185 
00186     return result;
00187 }
00188 
00189 
00190 }

kopete/protocols/messenger/libpapillon

Skip menu "kopete/protocols/messenger/libpapillon"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

kdenetwork

Skip menu "kdenetwork"
  • kget
  • kopete
  •   kopete
  •   libkopete
  •       libpapillon
  • krfb
Generated for kdenetwork 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