Move everything into the QHttpEngine namespace.
This commit is contained in:
@@ -37,7 +37,7 @@ int main(int argc, char * argv[])
|
||||
QCoreApplication a(argc, argv);
|
||||
|
||||
// Attempt to open the local file and read from it
|
||||
LocalFile file;
|
||||
QHttpEngine::LocalFile file;
|
||||
if (!file.open()) {
|
||||
qCritical("Unable to open local file - is server running?");
|
||||
return 1;
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
#include "apihandler.h"
|
||||
|
||||
void ApiHandler::messages(Socket *socket)
|
||||
void ApiHandler::messages(QHttpEngine::Socket *socket)
|
||||
{
|
||||
QJsonObject object;
|
||||
object.insert("messages", QJsonArray::fromStringList(mMessages));
|
||||
@@ -35,7 +35,7 @@ void ApiHandler::messages(Socket *socket)
|
||||
}
|
||||
|
||||
|
||||
void ApiHandler::messagesNew(Socket *socket)
|
||||
void ApiHandler::messagesNew(QHttpEngine::Socket *socket)
|
||||
{
|
||||
QJsonDocument document;
|
||||
if (socket->readJson(document)) {
|
||||
@@ -49,5 +49,5 @@ void ApiHandler::messagesNew(Socket *socket)
|
||||
}
|
||||
|
||||
// If execution reaches this point, malformed data was supplied
|
||||
socket->writeError(Socket::BadRequest);
|
||||
socket->writeError(QHttpEngine::Socket::BadRequest);
|
||||
}
|
||||
|
||||
@@ -34,8 +34,8 @@ class ApiHandler : public QObject
|
||||
|
||||
public Q_SLOTS:
|
||||
|
||||
void messages(Socket *socket);
|
||||
void messagesNew(Socket *socket);
|
||||
void messages(QHttpEngine::Socket *socket);
|
||||
void messagesNew(QHttpEngine::Socket *socket);
|
||||
|
||||
private:
|
||||
|
||||
|
||||
@@ -64,16 +64,16 @@ int main(int argc, char * argv[])
|
||||
quint16 port = parser.value(portOption).toInt();
|
||||
|
||||
// Build the hierarchy of handlers
|
||||
FilesystemHandler handler(":/static");
|
||||
QHttpEngine::FilesystemHandler handler(":/static");
|
||||
handler.addRedirect(QRegExp("^$"), "/index.html");
|
||||
|
||||
ApiHandler renameMe;
|
||||
QObjectHandler apiHandler;
|
||||
QHttpEngine::QObjectHandler apiHandler;
|
||||
apiHandler.registerMethod("messages", &renameMe, &ApiHandler::messages);
|
||||
apiHandler.registerMethod("messages/new", &renameMe, &ApiHandler::messagesNew);
|
||||
handler.addSubHandler(QRegExp("api/"), &apiHandler);
|
||||
|
||||
Server server(&handler);
|
||||
QHttpEngine::Server server(&handler);
|
||||
|
||||
// Attempt to listen on the specified port
|
||||
if (!server.listen(address, port)) {
|
||||
|
||||
@@ -68,8 +68,8 @@ int main(int argc, char * argv[])
|
||||
QString dir = parser.value(dirOption);
|
||||
|
||||
// Create the filesystem handler and server
|
||||
FilesystemHandler handler(dir);
|
||||
Server server(&handler);
|
||||
QHttpEngine::FilesystemHandler handler(dir);
|
||||
QHttpEngine::Server server(&handler);
|
||||
|
||||
// Attempt to listen on the specified port
|
||||
if (!server.listen(address, port)) {
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
|
||||
#include "qhttpengine_global.h"
|
||||
|
||||
namespace QHttpEngine
|
||||
{
|
||||
|
||||
class QHTTPENGINE_EXPORT BasicAuthMiddlewarePrivate;
|
||||
|
||||
/**
|
||||
@@ -79,4 +82,6 @@ private:
|
||||
BasicAuthMiddlewarePrivate *const d;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // QHTTPENGINE_BASICAUTHMIDDLEWARE_H
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
|
||||
#include "qhttpengine_global.h"
|
||||
|
||||
namespace QHttpEngine
|
||||
{
|
||||
|
||||
class QHTTPENGINE_EXPORT FilesystemHandlerPrivate;
|
||||
|
||||
/**
|
||||
@@ -82,4 +85,6 @@ private:
|
||||
friend class FilesystemHandlerPrivate;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // QHTTPENGINE_FILESYSTEMHANDLER_H
|
||||
|
||||
@@ -28,6 +28,10 @@
|
||||
#include "qhttpengine_global.h"
|
||||
|
||||
class QRegExp;
|
||||
|
||||
namespace QHttpEngine
|
||||
{
|
||||
|
||||
class Middleware;
|
||||
class Socket;
|
||||
|
||||
@@ -128,4 +132,6 @@ private:
|
||||
friend class HandlerPrivate;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // QHTTPENGINE_HANDLER_H
|
||||
|
||||
@@ -29,6 +29,9 @@
|
||||
|
||||
#include "qhttpengine_global.h"
|
||||
|
||||
namespace QHttpEngine
|
||||
{
|
||||
|
||||
/**
|
||||
* @brief Case-insensitive subclass of QByteArray
|
||||
*
|
||||
@@ -94,4 +97,6 @@ inline bool operator>=(const IByteArray &a1, const QByteArray &a2) { return a1.t
|
||||
inline bool operator>=(const QByteArray &a1, const IByteArray &a2) { return a1.toLower() >= a2.toLower(); }
|
||||
inline bool operator>=(const IByteArray &a1, const IByteArray &a2) { return a1.toLower() >= a2.toLower(); }
|
||||
|
||||
}
|
||||
|
||||
#endif // QHTTPENGINE_IBYTEARRAY_H
|
||||
|
||||
@@ -29,6 +29,9 @@
|
||||
|
||||
#include "qhttpengine_global.h"
|
||||
|
||||
namespace QHttpEngine
|
||||
{
|
||||
|
||||
class QHTTPENGINE_EXPORT LocalAuthMiddlewarePrivate;
|
||||
|
||||
/**
|
||||
@@ -98,4 +101,6 @@ private:
|
||||
LocalAuthMiddlewarePrivate *const d;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // QHTTPENGINE_LOCALAUTHMIDDLEWARE_H
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
|
||||
#include "qhttpengine_global.h"
|
||||
|
||||
namespace QHttpEngine
|
||||
{
|
||||
|
||||
class QHTTPENGINE_EXPORT LocalFilePrivate;
|
||||
|
||||
/**
|
||||
@@ -75,4 +78,6 @@ private:
|
||||
friend class LocalFilePrivate;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // QHTTPENGINE_LOCALFILE_H
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
|
||||
#include "qhttpengine_global.h"
|
||||
|
||||
namespace QHttpEngine
|
||||
{
|
||||
|
||||
class Socket;
|
||||
|
||||
/**
|
||||
@@ -56,4 +59,6 @@ public:
|
||||
virtual bool process(Socket *socket) = 0;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // QHTTPENGINE_MIDDLEWARE_H
|
||||
|
||||
@@ -29,6 +29,9 @@
|
||||
|
||||
#include "qhttpengine_global.h"
|
||||
|
||||
namespace QHttpEngine
|
||||
{
|
||||
|
||||
/**
|
||||
* @brief Utility methods for parsing HTTP requests and responses
|
||||
*
|
||||
@@ -86,4 +89,6 @@ public:
|
||||
static bool parseResponseHeaders(const QByteArray &data, int &statusCode, QByteArray &statusReason, Socket::HeaderMap &headers);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // QHTTPENGINE_PARSER_H
|
||||
|
||||
@@ -29,6 +29,9 @@
|
||||
|
||||
#include "qhttpengine_global.h"
|
||||
|
||||
namespace QHttpEngine
|
||||
{
|
||||
|
||||
class QHTTPENGINE_EXPORT ProxyHandlerPrivate;
|
||||
|
||||
/**
|
||||
@@ -57,4 +60,6 @@ private:
|
||||
ProxyHandlerPrivate *const d;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // QHTTPENGINE_PROXYHANDLER_H
|
||||
|
||||
@@ -28,6 +28,10 @@
|
||||
#include "qhttpengine_global.h"
|
||||
|
||||
class QIODevice;
|
||||
|
||||
namespace QHttpEngine
|
||||
{
|
||||
|
||||
class QHTTPENGINE_EXPORT QIODeviceCopierPrivate;
|
||||
|
||||
/**
|
||||
@@ -126,4 +130,6 @@ private:
|
||||
friend class QIODeviceCopierPrivate;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // QHTTPENGINE_QIODEVICECOPIER_H
|
||||
|
||||
@@ -27,7 +27,11 @@
|
||||
|
||||
#include "qhttpengine_global.h"
|
||||
|
||||
namespace QHttpEngine
|
||||
{
|
||||
|
||||
class Socket;
|
||||
|
||||
class QHTTPENGINE_EXPORT QObjectHandlerPrivate;
|
||||
|
||||
/**
|
||||
@@ -185,4 +189,6 @@ private:
|
||||
friend class QObjectHandlerPrivate;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // QHTTPENGINE_QOBJECTHANDLER_H
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
|
||||
#include "qhttpengine_global.h"
|
||||
|
||||
namespace QHttpEngine
|
||||
{
|
||||
|
||||
class QHTTPENGINE_EXPORT RangePrivate;
|
||||
|
||||
/**
|
||||
@@ -266,4 +269,6 @@ private:
|
||||
RangePrivate *const d;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // QHTTPENGINE_RANGE_H
|
||||
|
||||
@@ -33,7 +33,11 @@
|
||||
class QSslConfiguration;
|
||||
#endif
|
||||
|
||||
namespace QHttpEngine
|
||||
{
|
||||
|
||||
class Handler;
|
||||
|
||||
class QHTTPENGINE_EXPORT ServerPrivate;
|
||||
|
||||
/**
|
||||
@@ -104,4 +108,6 @@ private:
|
||||
friend class ServerPrivate;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // QHTTPENGINE_SERVER_H
|
||||
|
||||
@@ -33,6 +33,10 @@
|
||||
|
||||
class QJsonDocument;
|
||||
class QTcpSocket;
|
||||
|
||||
namespace QHttpEngine
|
||||
{
|
||||
|
||||
class QHTTPENGINE_EXPORT SocketPrivate;
|
||||
|
||||
/**
|
||||
@@ -358,4 +362,6 @@ private:
|
||||
friend class SocketPrivate;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // QHTTPENGINE_SOCKET_H
|
||||
|
||||
@@ -27,6 +27,8 @@
|
||||
|
||||
#include "basicauthmiddleware_p.h"
|
||||
|
||||
using namespace QHttpEngine;
|
||||
|
||||
BasicAuthMiddlewarePrivate::BasicAuthMiddlewarePrivate(QObject *parent, const QString &realm)
|
||||
: QObject(parent),
|
||||
realm(realm)
|
||||
|
||||
@@ -26,6 +26,9 @@
|
||||
#include <QMap>
|
||||
#include <QObject>
|
||||
|
||||
namespace QHttpEngine
|
||||
{
|
||||
|
||||
class BasicAuthMiddlewarePrivate : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
@@ -38,4 +41,6 @@ public:
|
||||
QMap<QString, QString> map;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // QHTTPENGINE_BASICAUTHMIDDLEWARE_P_H
|
||||
|
||||
@@ -32,6 +32,8 @@
|
||||
|
||||
#include "filesystemhandler_p.h"
|
||||
|
||||
using namespace QHttpEngine;
|
||||
|
||||
// Template for listing directory contents
|
||||
const QString ListTemplate =
|
||||
"<!DOCTYPE html>"
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
#include <QMimeDatabase>
|
||||
#include <QObject>
|
||||
|
||||
namespace QHttpEngine
|
||||
{
|
||||
|
||||
class FilesystemHandler;
|
||||
class Socket;
|
||||
|
||||
@@ -48,4 +51,6 @@ public:
|
||||
QMimeDatabase database;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // QHTTPENGINE_FILESYSTEMHANDLER_P_H
|
||||
|
||||
@@ -26,6 +26,8 @@
|
||||
|
||||
#include "handler_p.h"
|
||||
|
||||
using namespace QHttpEngine;
|
||||
|
||||
HandlerPrivate::HandlerPrivate(Handler *handler)
|
||||
: QObject(handler),
|
||||
q(handler)
|
||||
|
||||
@@ -30,6 +30,9 @@
|
||||
|
||||
#include <qhttpengine/handler.h>
|
||||
|
||||
namespace QHttpEngine
|
||||
{
|
||||
|
||||
typedef QPair<QRegExp, QString> Redirect;
|
||||
typedef QPair<QRegExp, Handler*> SubHandler;
|
||||
|
||||
@@ -50,4 +53,6 @@ private:
|
||||
Handler *const q;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // QHTTPENGINE_HANDLER_P_H
|
||||
|
||||
@@ -29,6 +29,8 @@
|
||||
|
||||
#include "localauthmiddleware_p.h"
|
||||
|
||||
using namespace QHttpEngine;
|
||||
|
||||
LocalAuthMiddlewarePrivate::LocalAuthMiddlewarePrivate(QObject *parent)
|
||||
: QObject(parent),
|
||||
tokenHeader("X-Auth-Token"),
|
||||
|
||||
@@ -28,6 +28,9 @@
|
||||
|
||||
#include <qhttpengine/localfile.h>
|
||||
|
||||
namespace QHttpEngine
|
||||
{
|
||||
|
||||
class LocalAuthMiddlewarePrivate : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
@@ -44,4 +47,6 @@ public:
|
||||
QString token;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // QHTTPENGINE_LOCALAUTHMIDDLEWARE_P_H
|
||||
|
||||
@@ -34,6 +34,8 @@
|
||||
|
||||
#include "localfile_p.h"
|
||||
|
||||
using namespace QHttpEngine;
|
||||
|
||||
LocalFilePrivate::LocalFilePrivate(LocalFile *localFile)
|
||||
: QObject(localFile),
|
||||
q(localFile)
|
||||
|
||||
@@ -25,6 +25,9 @@
|
||||
|
||||
#include <QObject>
|
||||
|
||||
namespace QHttpEngine
|
||||
{
|
||||
|
||||
class LocalFile;
|
||||
|
||||
class LocalFilePrivate : public QObject
|
||||
@@ -40,7 +43,9 @@ public:
|
||||
|
||||
private:
|
||||
|
||||
LocalFile*const q;
|
||||
LocalFile *const q;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // QHTTPENGINE_LOCALFILE_P_H
|
||||
|
||||
@@ -26,6 +26,8 @@
|
||||
|
||||
#include <qhttpengine/parser.h>
|
||||
|
||||
using namespace QHttpEngine;
|
||||
|
||||
void Parser::split(const QByteArray &data, const QByteArray &delim, int maxSplit, QByteArrayList &parts)
|
||||
{
|
||||
int index = 0;
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
#include "proxyhandler_p.h"
|
||||
#include "proxysocket.h"
|
||||
|
||||
using namespace QHttpEngine;
|
||||
|
||||
ProxyHandlerPrivate::ProxyHandlerPrivate(QObject *parent, const QHostAddress &address, quint16 port)
|
||||
: QObject(parent),
|
||||
address(address),
|
||||
|
||||
@@ -28,6 +28,9 @@
|
||||
|
||||
#include <qhttpengine/socket.h>
|
||||
|
||||
namespace QHttpEngine
|
||||
{
|
||||
|
||||
class ProxyHandlerPrivate : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
@@ -40,4 +43,6 @@ public:
|
||||
quint16 port;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // QHTTPENGINE_PROXYHANDLER_P_H
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
|
||||
#include "proxysocket.h"
|
||||
|
||||
using namespace QHttpEngine;
|
||||
|
||||
QProxySocket::QProxySocket(Socket *socket, const QString &path, const QHostAddress &address, quint16 port)
|
||||
: QObject(socket),
|
||||
mDownstreamSocket(socket),
|
||||
|
||||
@@ -29,6 +29,8 @@
|
||||
|
||||
#include <qhttpengine/socket.h>
|
||||
|
||||
using namespace QHttpEngine;
|
||||
|
||||
/**
|
||||
* @brief HTTP socket for connecting to a proxy
|
||||
*/
|
||||
|
||||
@@ -27,6 +27,8 @@
|
||||
|
||||
#include "qiodevicecopier_p.h"
|
||||
|
||||
using namespace QHttpEngine;
|
||||
|
||||
// Default value for the bufferSize property
|
||||
const qint64 DefaultBufferSize = 65536;
|
||||
|
||||
|
||||
@@ -26,6 +26,10 @@
|
||||
#include <QObject>
|
||||
|
||||
class QIODevice;
|
||||
|
||||
namespace QHttpEngine
|
||||
{
|
||||
|
||||
class QIODeviceCopier;
|
||||
|
||||
class QIODeviceCopierPrivate : public QObject
|
||||
@@ -56,4 +60,6 @@ private:
|
||||
QIODeviceCopier *const q;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // QHTTPENGINE_QIODEVICECOPIER_P_H
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
|
||||
#include "qobjecthandler_p.h"
|
||||
|
||||
using namespace QHttpEngine;
|
||||
|
||||
QObjectHandlerPrivate::QObjectHandlerPrivate(QObjectHandler *handler)
|
||||
: QObject(handler),
|
||||
q(handler)
|
||||
|
||||
@@ -26,6 +26,9 @@
|
||||
#include <QMap>
|
||||
#include <QObject>
|
||||
|
||||
namespace QHttpEngine
|
||||
{
|
||||
|
||||
class Socket;
|
||||
class QObjectHandler;
|
||||
|
||||
@@ -69,4 +72,6 @@ private:
|
||||
QObjectHandler *const q;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // QHTTPENGINE_QOBJECTHANDLER_P_H
|
||||
|
||||
@@ -26,6 +26,8 @@
|
||||
|
||||
#include "range_p.h"
|
||||
|
||||
using namespace QHttpEngine;
|
||||
|
||||
RangePrivate::RangePrivate(Range *range)
|
||||
: q(range)
|
||||
{
|
||||
|
||||
@@ -25,6 +25,9 @@
|
||||
|
||||
#include <qhttpengine/range.h>
|
||||
|
||||
namespace QHttpEngine
|
||||
{
|
||||
|
||||
class RangePrivate
|
||||
{
|
||||
public:
|
||||
@@ -40,4 +43,6 @@ private:
|
||||
Range *const q;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // QHTTPENGINE_RANGE_P_H
|
||||
|
||||
@@ -29,6 +29,8 @@
|
||||
|
||||
#include "server_p.h"
|
||||
|
||||
using namespace QHttpEngine;
|
||||
|
||||
ServerPrivate::ServerPrivate(Server *httpServer)
|
||||
: QObject(httpServer),
|
||||
q(httpServer),
|
||||
|
||||
@@ -32,6 +32,9 @@
|
||||
|
||||
#include <qhttpengine/server.h>
|
||||
|
||||
namespace QHttpEngine
|
||||
{
|
||||
|
||||
class Handler;
|
||||
|
||||
class ServerPrivate : public QObject
|
||||
@@ -55,4 +58,6 @@ private:
|
||||
Server *const q;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // QHTTPENGINE_SERVER_P_H
|
||||
|
||||
@@ -30,6 +30,8 @@
|
||||
|
||||
#include "socket_p.h"
|
||||
|
||||
using namespace QHttpEngine;
|
||||
|
||||
// Predefined error response requires a simple HTML template to be returned to
|
||||
// the client describing the error condition
|
||||
const QString ErrorTemplate =
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
|
||||
class QTcpSocket;
|
||||
|
||||
namespace QHttpEngine
|
||||
{
|
||||
|
||||
class SocketPrivate : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
@@ -79,4 +82,6 @@ private:
|
||||
Socket*const q;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // QHTTPENGINE_SOCKET_P_H
|
||||
|
||||
@@ -72,22 +72,22 @@ void TestQFilesystemHandler::testRequests_data()
|
||||
|
||||
QTest::newRow("nonexistent resource")
|
||||
<< "nonexistent"
|
||||
<< static_cast<int>(Socket::NotFound)
|
||||
<< static_cast<int>(QHttpEngine::Socket::NotFound)
|
||||
<< QByteArray();
|
||||
|
||||
QTest::newRow("outside document root")
|
||||
<< "../outside"
|
||||
<< static_cast<int>(Socket::NotFound)
|
||||
<< static_cast<int>(QHttpEngine::Socket::NotFound)
|
||||
<< QByteArray();
|
||||
|
||||
QTest::newRow("inside document root")
|
||||
<< "inside"
|
||||
<< static_cast<int>(Socket::OK)
|
||||
<< static_cast<int>(QHttpEngine::Socket::OK)
|
||||
<< Data;
|
||||
|
||||
QTest::newRow("directory listing")
|
||||
<< ""
|
||||
<< static_cast<int>(Socket::OK)
|
||||
<< static_cast<int>(QHttpEngine::Socket::OK)
|
||||
<< QByteArray();
|
||||
}
|
||||
|
||||
@@ -97,13 +97,13 @@ void TestQFilesystemHandler::testRequests()
|
||||
QFETCH(int, statusCode);
|
||||
QFETCH(QByteArray, data);
|
||||
|
||||
FilesystemHandler handler(QDir(dir.path()).absoluteFilePath("root"));
|
||||
QHttpEngine::FilesystemHandler handler(QDir(dir.path()).absoluteFilePath("root"));
|
||||
|
||||
QSocketPair pair;
|
||||
QTRY_VERIFY(pair.isConnected());
|
||||
|
||||
QSimpleHttpClient client(pair.client());
|
||||
Socket socket(pair.server(), &pair);
|
||||
QHttpEngine::Socket socket(pair.server(), &pair);
|
||||
|
||||
handler.route(&socket, path);
|
||||
|
||||
@@ -124,37 +124,37 @@ void TestQFilesystemHandler::testRangeRequests_data()
|
||||
|
||||
QTest::newRow("full file")
|
||||
<< "inside" << ""
|
||||
<< static_cast<int>(Socket::OK)
|
||||
<< static_cast<int>(QHttpEngine::Socket::OK)
|
||||
<< ""
|
||||
<< Data;
|
||||
|
||||
QTest::newRow("range 0-2")
|
||||
<< "inside" << "0-2"
|
||||
<< static_cast<int>(Socket::PartialContent)
|
||||
<< static_cast<int>(QHttpEngine::Socket::PartialContent)
|
||||
<< "bytes 0-2/4"
|
||||
<< Data.mid(0, 3);
|
||||
|
||||
QTest::newRow("range 1-2")
|
||||
<< "inside" << "1-2"
|
||||
<< static_cast<int>(Socket::PartialContent)
|
||||
<< static_cast<int>(QHttpEngine::Socket::PartialContent)
|
||||
<< "bytes 1-2/4"
|
||||
<< Data.mid(1, 2);
|
||||
|
||||
QTest::newRow("skip first 1 byte")
|
||||
<< "inside" << "1-"
|
||||
<< static_cast<int>(Socket::PartialContent)
|
||||
<< static_cast<int>(QHttpEngine::Socket::PartialContent)
|
||||
<< "bytes 1-3/4"
|
||||
<< Data.mid(1);
|
||||
|
||||
QTest::newRow("last 2 bytes")
|
||||
<< "inside" << "-2"
|
||||
<< static_cast<int>(Socket::PartialContent)
|
||||
<< static_cast<int>(QHttpEngine::Socket::PartialContent)
|
||||
<< "bytes 2-3/4"
|
||||
<< Data.mid(2);
|
||||
|
||||
QTest::newRow("bad range request")
|
||||
<< "inside" << "abcd"
|
||||
<< static_cast<int>(Socket::OK)
|
||||
<< static_cast<int>(QHttpEngine::Socket::OK)
|
||||
<< ""
|
||||
<< Data;
|
||||
}
|
||||
@@ -167,16 +167,16 @@ void TestQFilesystemHandler::testRangeRequests()
|
||||
QFETCH(QString, contentRange);
|
||||
QFETCH(QByteArray, data);
|
||||
|
||||
FilesystemHandler handler(QDir(dir.path()).absoluteFilePath("root"));
|
||||
QHttpEngine::FilesystemHandler handler(QDir(dir.path()).absoluteFilePath("root"));
|
||||
|
||||
QSocketPair pair;
|
||||
QTRY_VERIFY(pair.isConnected());
|
||||
|
||||
QSimpleHttpClient client(pair.client());
|
||||
Socket socket(pair.server(), &pair);
|
||||
QHttpEngine::Socket socket(pair.server(), &pair);
|
||||
|
||||
if (!range.isEmpty()) {
|
||||
Socket::HeaderMap inHeaders;
|
||||
QHttpEngine::Socket::HeaderMap inHeaders;
|
||||
inHeaders.insert("Range", QByteArray("bytes=") + range.toUtf8());
|
||||
client.sendHeaders("GET", path.toUtf8(), inHeaders);
|
||||
QTRY_VERIFY(socket.isHeadersParsed());
|
||||
|
||||
@@ -49,7 +49,7 @@ private Q_SLOTS:
|
||||
|
||||
private:
|
||||
|
||||
BasicAuthMiddleware auth;
|
||||
QHttpEngine::BasicAuthMiddleware auth;
|
||||
};
|
||||
|
||||
void TestQHttpBasicAuth::initTestCase()
|
||||
@@ -68,19 +68,19 @@ void TestQHttpBasicAuth::testProcess_data()
|
||||
<< false
|
||||
<< QString()
|
||||
<< QString()
|
||||
<< static_cast<int>(Socket::Unauthorized);
|
||||
<< static_cast<int>(QHttpEngine::Socket::Unauthorized);
|
||||
|
||||
QTest::newRow("invalid credentials")
|
||||
<< true
|
||||
<< Username
|
||||
<< QString()
|
||||
<< static_cast<int>(Socket::Unauthorized);
|
||||
<< static_cast<int>(QHttpEngine::Socket::Unauthorized);
|
||||
|
||||
QTest::newRow("valid credentials")
|
||||
<< true
|
||||
<< Username
|
||||
<< Password
|
||||
<< static_cast<int>(Socket::NotFound);
|
||||
<< static_cast<int>(QHttpEngine::Socket::NotFound);
|
||||
}
|
||||
|
||||
void TestQHttpBasicAuth::testProcess()
|
||||
@@ -94,9 +94,9 @@ void TestQHttpBasicAuth::testProcess()
|
||||
QTRY_VERIFY(pair.isConnected());
|
||||
|
||||
QSimpleHttpClient client(pair.client());
|
||||
Socket socket(pair.server(), &pair);
|
||||
QHttpEngine::Socket socket(pair.server(), &pair);
|
||||
|
||||
Socket::HeaderMap headers;
|
||||
QHttpEngine::Socket::HeaderMap headers;
|
||||
|
||||
if (header) {
|
||||
headers.insert(
|
||||
@@ -108,7 +108,7 @@ void TestQHttpBasicAuth::testProcess()
|
||||
client.sendHeaders("GET", "/", headers);
|
||||
QTRY_VERIFY(socket.isHeadersParsed());
|
||||
|
||||
Handler handler;
|
||||
QHttpEngine::Handler handler;
|
||||
handler.addMiddleware(&auth);
|
||||
handler.route(&socket, "/");
|
||||
|
||||
|
||||
@@ -29,13 +29,13 @@
|
||||
#include "common/qsimplehttpclient.h"
|
||||
#include "common/qsocketpair.h"
|
||||
|
||||
class DummyHandler : public Handler
|
||||
class DummyHandler : public QHttpEngine::Handler
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
|
||||
virtual void process(Socket *socket, const QString &path) {
|
||||
virtual void process(QHttpEngine::Socket *socket, const QString &path) {
|
||||
mPathRemainder = path;
|
||||
socket->writeHeaders();
|
||||
socket->close();
|
||||
@@ -69,20 +69,20 @@ void TestQHttpHandler::testRedirect_data()
|
||||
<< QRegExp("\\w+")
|
||||
<< QString("/two")
|
||||
<< QByteArray("one")
|
||||
<< static_cast<int>(Socket::Found)
|
||||
<< static_cast<int>(QHttpEngine::Socket::Found)
|
||||
<< QByteArray("/two");
|
||||
|
||||
QTest::newRow("no match")
|
||||
<< QRegExp("\\d+")
|
||||
<< QString("")
|
||||
<< QByteArray("test")
|
||||
<< static_cast<int>(Socket::NotFound);
|
||||
<< static_cast<int>(QHttpEngine::Socket::NotFound);
|
||||
|
||||
QTest::newRow("captured texts")
|
||||
<< QRegExp("(\\d+)")
|
||||
<< QString("/path/%1")
|
||||
<< QByteArray("123")
|
||||
<< static_cast<int>(Socket::Found)
|
||||
<< static_cast<int>(QHttpEngine::Socket::Found)
|
||||
<< QByteArray("/path/123");
|
||||
}
|
||||
|
||||
@@ -97,18 +97,18 @@ void TestQHttpHandler::testRedirect()
|
||||
QTRY_VERIFY(pair.isConnected());
|
||||
|
||||
QSimpleHttpClient client(pair.client());
|
||||
Socket socket(pair.server(), &pair);
|
||||
QHttpEngine::Socket socket(pair.server(), &pair);
|
||||
|
||||
client.sendHeaders("GET", path);
|
||||
QTRY_VERIFY(socket.isHeadersParsed());
|
||||
|
||||
Handler handler;
|
||||
QHttpEngine::Handler handler;
|
||||
handler.addRedirect(pattern, destination);
|
||||
handler.route(&socket, socket.path());
|
||||
|
||||
QTRY_COMPARE(client.statusCode(), statusCode);
|
||||
|
||||
if (statusCode == Socket::Found) {
|
||||
if (statusCode == QHttpEngine::Socket::Found) {
|
||||
QFETCH(QByteArray, location);
|
||||
QCOMPARE(client.headers().value("Location"), location);
|
||||
}
|
||||
@@ -125,19 +125,19 @@ void TestQHttpHandler::testSubHandler_data()
|
||||
<< QRegExp("\\w+")
|
||||
<< QByteArray("test")
|
||||
<< QString("")
|
||||
<< static_cast<int>(Socket::OK);
|
||||
<< static_cast<int>(QHttpEngine::Socket::OK);
|
||||
|
||||
QTest::newRow("no match")
|
||||
<< QRegExp("\\d+")
|
||||
<< QByteArray("test")
|
||||
<< QString("")
|
||||
<< static_cast<int>(Socket::NotFound);
|
||||
<< static_cast<int>(QHttpEngine::Socket::NotFound);
|
||||
|
||||
QTest::newRow("path")
|
||||
<< QRegExp("one/")
|
||||
<< QByteArray("one/two")
|
||||
<< QString("two")
|
||||
<< static_cast<int>(Socket::OK);
|
||||
<< static_cast<int>(QHttpEngine::Socket::OK);
|
||||
}
|
||||
|
||||
void TestQHttpHandler::testSubHandler()
|
||||
@@ -151,13 +151,13 @@ void TestQHttpHandler::testSubHandler()
|
||||
QTRY_VERIFY(pair.isConnected());
|
||||
|
||||
QSimpleHttpClient client(pair.client());
|
||||
Socket socket(pair.server(), &pair);
|
||||
QHttpEngine::Socket socket(pair.server(), &pair);
|
||||
|
||||
client.sendHeaders("GET", path);
|
||||
QTRY_VERIFY(socket.isHeadersParsed());
|
||||
|
||||
DummyHandler subHandler;
|
||||
Handler handler;
|
||||
QHttpEngine::Handler handler;
|
||||
handler.addSubHandler(pattern, &subHandler);
|
||||
|
||||
handler.route(&socket, socket.path());
|
||||
|
||||
@@ -29,15 +29,15 @@
|
||||
#include "common/qsimplehttpclient.h"
|
||||
#include "common/qsocketpair.h"
|
||||
|
||||
class DummyMiddleware : public Middleware
|
||||
class DummyMiddleware : public QHttpEngine::Middleware
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
|
||||
virtual bool process(Socket *socket)
|
||||
virtual bool process(QHttpEngine::Socket *socket)
|
||||
{
|
||||
socket->writeError(Socket::Forbidden);
|
||||
socket->writeError(QHttpEngine::Socket::Forbidden);
|
||||
return false;
|
||||
}
|
||||
};
|
||||
@@ -57,17 +57,17 @@ void TestQHttpMiddleware::testProcess()
|
||||
QTRY_VERIFY(pair.isConnected());
|
||||
|
||||
QSimpleHttpClient client(pair.client());
|
||||
Socket socket(pair.server(), &pair);
|
||||
QHttpEngine::Socket socket(pair.server(), &pair);
|
||||
|
||||
client.sendHeaders("GET", "/");
|
||||
QTRY_VERIFY(socket.isHeadersParsed());
|
||||
|
||||
DummyMiddleware middleware;
|
||||
Handler handler;
|
||||
QHttpEngine::Handler handler;
|
||||
handler.addMiddleware(&middleware);
|
||||
handler.route(&socket, "/");
|
||||
|
||||
QTRY_COMPARE(client.statusCode(), static_cast<int>(Socket::Forbidden));
|
||||
QTRY_COMPARE(client.statusCode(), static_cast<int>(QHttpEngine::Socket::Forbidden));
|
||||
}
|
||||
|
||||
QTEST_MAIN(TestQHttpMiddleware)
|
||||
|
||||
@@ -30,15 +30,15 @@
|
||||
|
||||
typedef QList<QByteArray> QByteArrayList;
|
||||
|
||||
Q_DECLARE_METATYPE(Socket::Method)
|
||||
Q_DECLARE_METATYPE(Socket::QueryStringMap)
|
||||
Q_DECLARE_METATYPE(Socket::HeaderMap)
|
||||
Q_DECLARE_METATYPE(QHttpEngine::Socket::Method)
|
||||
Q_DECLARE_METATYPE(QHttpEngine::Socket::QueryStringMap)
|
||||
Q_DECLARE_METATYPE(QHttpEngine::Socket::HeaderMap)
|
||||
|
||||
const IByteArray Key1 = "a";
|
||||
const QHttpEngine::IByteArray Key1 = "a";
|
||||
const QByteArray Value1 = "b";
|
||||
const QByteArray Line1 = Key1 + ": " + Value1;
|
||||
|
||||
const IByteArray Key2 = "c";
|
||||
const QHttpEngine::IByteArray Key2 = "c";
|
||||
const QByteArray Value2 = "d";
|
||||
const QByteArray Line2 = Key2 + ": " + Value2;
|
||||
|
||||
@@ -72,7 +72,7 @@ private Q_SLOTS:
|
||||
|
||||
private:
|
||||
|
||||
Socket::HeaderMap headers;
|
||||
QHttpEngine::Socket::HeaderMap headers;
|
||||
};
|
||||
|
||||
TestQHttpParser::TestQHttpParser()
|
||||
@@ -127,7 +127,7 @@ void TestQHttpParser::testSplit()
|
||||
QFETCH(QByteArrayList, parts);
|
||||
|
||||
QByteArrayList outParts;
|
||||
Parser::split(data, delim, maxSplit, outParts);
|
||||
QHttpEngine::Parser::split(data, delim, maxSplit, outParts);
|
||||
|
||||
QCOMPARE(outParts, parts);
|
||||
}
|
||||
@@ -136,29 +136,29 @@ void TestQHttpParser::testParsePath_data()
|
||||
{
|
||||
QTest::addColumn<QByteArray>("rawPath");
|
||||
QTest::addColumn<QString>("path");
|
||||
QTest::addColumn<Socket::QueryStringMap>("map");
|
||||
QTest::addColumn<QHttpEngine::Socket::QueryStringMap>("map");
|
||||
|
||||
QTest::newRow("no query string")
|
||||
<< QByteArray("/path")
|
||||
<< QString("/path")
|
||||
<< Socket::QueryStringMap();
|
||||
<< QHttpEngine::Socket::QueryStringMap();
|
||||
|
||||
QTest::newRow("single parameter")
|
||||
<< QByteArray("/path?a=b")
|
||||
<< QString("/path")
|
||||
<< Socket::QueryStringMap{{"a", "b"}};
|
||||
<< QHttpEngine::Socket::QueryStringMap{{"a", "b"}};
|
||||
}
|
||||
|
||||
void TestQHttpParser::testParsePath()
|
||||
{
|
||||
QFETCH(QByteArray, rawPath);
|
||||
QFETCH(QString, path);
|
||||
QFETCH(Socket::QueryStringMap, map);
|
||||
QFETCH(QHttpEngine::Socket::QueryStringMap, map);
|
||||
|
||||
QString outPath;
|
||||
Socket::QueryStringMap outMap;
|
||||
QHttpEngine::Socket::QueryStringMap outMap;
|
||||
|
||||
QVERIFY(Parser::parsePath(rawPath, outPath, outMap));
|
||||
QVERIFY(QHttpEngine::Parser::parsePath(rawPath, outPath, outMap));
|
||||
|
||||
QCOMPARE(path, outPath);
|
||||
QCOMPARE(map, outMap);
|
||||
@@ -168,7 +168,7 @@ void TestQHttpParser::testParseHeaderList_data()
|
||||
{
|
||||
QTest::addColumn<bool>("success");
|
||||
QTest::addColumn<QByteArrayList>("lines");
|
||||
QTest::addColumn<Socket::HeaderMap>("headers");
|
||||
QTest::addColumn<QHttpEngine::Socket::HeaderMap>("headers");
|
||||
|
||||
QTest::newRow("empty line")
|
||||
<< false
|
||||
@@ -185,11 +185,11 @@ void TestQHttpParser::testParseHeaderList()
|
||||
QFETCH(bool, success);
|
||||
QFETCH(QByteArrayList, lines);
|
||||
|
||||
Socket::HeaderMap outHeaders;
|
||||
QCOMPARE(Parser::parseHeaderList(lines, outHeaders), success);
|
||||
QHttpEngine::Socket::HeaderMap outHeaders;
|
||||
QCOMPARE(QHttpEngine::Parser::parseHeaderList(lines, outHeaders), success);
|
||||
|
||||
if (success) {
|
||||
QFETCH(Socket::HeaderMap, headers);
|
||||
QFETCH(QHttpEngine::Socket::HeaderMap, headers);
|
||||
QCOMPARE(outHeaders, headers);
|
||||
}
|
||||
}
|
||||
@@ -216,9 +216,9 @@ void TestQHttpParser::testParseHeaders()
|
||||
QFETCH(QByteArray, data);
|
||||
|
||||
QByteArrayList outParts;
|
||||
Socket::HeaderMap outHeaders;
|
||||
QHttpEngine::Socket::HeaderMap outHeaders;
|
||||
|
||||
QCOMPARE(Parser::parseHeaders(data, outParts, outHeaders), success);
|
||||
QCOMPARE(QHttpEngine::Parser::parseHeaders(data, outParts, outHeaders), success);
|
||||
|
||||
if (success) {
|
||||
QFETCH(QByteArrayList, parts);
|
||||
@@ -230,7 +230,7 @@ void TestQHttpParser::testParseRequestHeaders_data()
|
||||
{
|
||||
QTest::addColumn<bool>("success");
|
||||
QTest::addColumn<QByteArray>("data");
|
||||
QTest::addColumn<Socket::Method>("method");
|
||||
QTest::addColumn<QHttpEngine::Socket::Method>("method");
|
||||
QTest::addColumn<QByteArray>("path");
|
||||
|
||||
QTest::newRow("bad HTTP version")
|
||||
@@ -240,7 +240,7 @@ void TestQHttpParser::testParseRequestHeaders_data()
|
||||
QTest::newRow("GET request")
|
||||
<< true
|
||||
<< QByteArray("GET / HTTP/1.0")
|
||||
<< Socket::GET
|
||||
<< QHttpEngine::Socket::GET
|
||||
<< QByteArray("/");
|
||||
}
|
||||
|
||||
@@ -249,14 +249,14 @@ void TestQHttpParser::testParseRequestHeaders()
|
||||
QFETCH(bool, success);
|
||||
QFETCH(QByteArray, data);
|
||||
|
||||
Socket::Method outMethod;
|
||||
QHttpEngine::Socket::Method outMethod;
|
||||
QByteArray outPath;
|
||||
Socket::HeaderMap outHeaders;
|
||||
QHttpEngine::Socket::HeaderMap outHeaders;
|
||||
|
||||
QCOMPARE(Parser::parseRequestHeaders(data, outMethod, outPath, outHeaders), success);
|
||||
QCOMPARE(QHttpEngine::Parser::parseRequestHeaders(data, outMethod, outPath, outHeaders), success);
|
||||
|
||||
if (success) {
|
||||
QFETCH(Socket::Method, method);
|
||||
QFETCH(QHttpEngine::Socket::Method, method);
|
||||
QFETCH(QByteArray, path);
|
||||
|
||||
QCOMPARE(method, outMethod);
|
||||
@@ -289,9 +289,9 @@ void TestQHttpParser::testParseResponseHeaders()
|
||||
|
||||
int outStatusCode;
|
||||
QByteArray outStatusReason;
|
||||
Socket::HeaderMap outHeaders;
|
||||
QHttpEngine::Socket::HeaderMap outHeaders;
|
||||
|
||||
QCOMPARE(Parser::parseResponseHeaders(data, outStatusCode, outStatusReason, outHeaders), success);
|
||||
QCOMPARE(QHttpEngine::Parser::parseResponseHeaders(data, outStatusCode, outStatusReason, outHeaders), success);
|
||||
|
||||
if (success) {
|
||||
QFETCH(int, statusCode);
|
||||
|
||||
@@ -58,15 +58,15 @@ TestQHttpRange::TestQHttpRange()
|
||||
|
||||
void TestQHttpRange::testDefaultConstructor()
|
||||
{
|
||||
Range range;
|
||||
QHttpEngine::Range range;
|
||||
|
||||
QCOMPARE(range.isValid(), false);
|
||||
}
|
||||
|
||||
void TestQHttpRange::testAssignmentOperator()
|
||||
{
|
||||
Range range;
|
||||
Range otherRange(100, 200, -1);
|
||||
QHttpEngine::Range range;
|
||||
QHttpEngine::Range otherRange(100, 200, -1);
|
||||
|
||||
range = otherRange;
|
||||
|
||||
@@ -110,7 +110,7 @@ void TestQHttpRange::testFromToLength()
|
||||
QFETCH(int, to);
|
||||
QFETCH(int, length);
|
||||
|
||||
Range range(inFrom, inTo, inDataSize);
|
||||
QHttpEngine::Range range(inFrom, inTo, inDataSize);
|
||||
|
||||
QCOMPARE(range.from(), from);
|
||||
QCOMPARE(range.to(), to);
|
||||
@@ -162,7 +162,7 @@ void TestQHttpRange::testIsValid()
|
||||
QFETCH(int, dataSize);
|
||||
QFETCH(bool, valid);
|
||||
|
||||
Range range(from, to, dataSize);
|
||||
QHttpEngine::Range range(from, to, dataSize);
|
||||
|
||||
QCOMPARE(range.isValid(), valid);
|
||||
}
|
||||
@@ -235,7 +235,7 @@ void TestQHttpRange::testParseFromString()
|
||||
QFETCH(int, dataSize);
|
||||
QFETCH(bool, valid);
|
||||
|
||||
Range range(data, dataSize);
|
||||
QHttpEngine::Range range(data, dataSize);
|
||||
|
||||
QCOMPARE(range.isValid(), valid);
|
||||
|
||||
@@ -281,7 +281,7 @@ void TestQHttpRange::testContentRange()
|
||||
QFETCH(int, dataSize);
|
||||
QFETCH(QString, contentRange);
|
||||
|
||||
Range range(from, to, dataSize);
|
||||
QHttpEngine::Range range(from, to, dataSize);
|
||||
|
||||
QCOMPARE(range.contentRange(), contentRange);
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
#include "common/qsimplehttpclient.h"
|
||||
|
||||
class TestHandler : public Handler
|
||||
class TestHandler : public QHttpEngine::Handler
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
@@ -45,12 +45,12 @@ public:
|
||||
|
||||
TestHandler() : mSocket(0) {}
|
||||
|
||||
virtual void process(Socket *socket, const QString &path) {
|
||||
virtual void process(QHttpEngine::Socket *socket, const QString &path) {
|
||||
mSocket = socket;
|
||||
mPath = path;
|
||||
}
|
||||
|
||||
Socket *mSocket;
|
||||
QHttpEngine::Socket *mSocket;
|
||||
QString mPath;
|
||||
};
|
||||
|
||||
@@ -70,7 +70,7 @@ private Q_SLOTS:
|
||||
void TestQHttpServer::testServer()
|
||||
{
|
||||
TestHandler handler;
|
||||
Server server(&handler);
|
||||
QHttpEngine::Server server(&handler);
|
||||
|
||||
QVERIFY(server.listen(QHostAddress::LocalHost));
|
||||
|
||||
@@ -102,7 +102,7 @@ void TestQHttpServer::testSsl()
|
||||
config.setPrivateKey(key);
|
||||
config.setLocalCertificateChain(certs);
|
||||
|
||||
Server server;
|
||||
QHttpEngine::Server server;
|
||||
server.setSslConfiguration(config);
|
||||
|
||||
QVERIFY(server.listen(QHostAddress::LocalHost));
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
#include "common/qsimplehttpclient.h"
|
||||
#include "common/qsocketpair.h"
|
||||
|
||||
Q_DECLARE_METATYPE(Socket::QueryStringMap)
|
||||
Q_DECLARE_METATYPE(QHttpEngine::Socket::QueryStringMap)
|
||||
|
||||
// Utility macro (avoids duplication) that creates a pair of connected
|
||||
// sockets, a QSimpleHttpClient for the client and a QHttpSocket for the
|
||||
@@ -41,7 +41,7 @@ Q_DECLARE_METATYPE(Socket::QueryStringMap)
|
||||
QSocketPair pair; \
|
||||
QTRY_VERIFY(pair.isConnected()); \
|
||||
QSimpleHttpClient client(pair.client()); \
|
||||
Socket server(pair.server())
|
||||
QHttpEngine::Socket server(pair.server())
|
||||
|
||||
const QByteArray Method = "POST";
|
||||
const QByteArray Path = "/test";
|
||||
@@ -67,7 +67,7 @@ private Q_SLOTS:
|
||||
|
||||
private:
|
||||
|
||||
Socket::HeaderMap headers;
|
||||
QHttpEngine::Socket::HeaderMap headers;
|
||||
};
|
||||
|
||||
TestQHttpSocket::TestQHttpSocket()
|
||||
@@ -82,7 +82,7 @@ void TestQHttpSocket::testProperties()
|
||||
|
||||
client.sendHeaders(Method, Path, headers);
|
||||
|
||||
QTRY_COMPARE(server.method(), Socket::POST);
|
||||
QTRY_COMPARE(server.method(), QHttpEngine::Socket::POST);
|
||||
QCOMPARE(server.rawPath(), Path);
|
||||
QCOMPARE(server.headers(), headers);
|
||||
|
||||
@@ -120,7 +120,7 @@ void TestQHttpSocket::testRedirect()
|
||||
|
||||
server.writeRedirect(Path, true);
|
||||
|
||||
QTRY_COMPARE(client.statusCode(), static_cast<int>(Socket::MovedPermanently));
|
||||
QTRY_COMPARE(client.statusCode(), static_cast<int>(QHttpEngine::Socket::MovedPermanently));
|
||||
QCOMPARE(client.headers().value("Location"), Path);
|
||||
QTRY_COMPARE(disconnectedSpy.count(), 1);
|
||||
}
|
||||
@@ -170,7 +170,7 @@ void TestQHttpSocket::testJson()
|
||||
QJsonObject object{{"a", "b"}, {"c", 123}};
|
||||
QByteArray data = QJsonDocument(object).toJson();
|
||||
|
||||
client.sendHeaders(Method, Path, Socket::HeaderMap{
|
||||
client.sendHeaders(Method, Path, QHttpEngine::Socket::HeaderMap{
|
||||
{"Content-Length", QByteArray::number(data.length())},
|
||||
{"Content-Type", "application/json"}
|
||||
});
|
||||
|
||||
@@ -31,8 +31,8 @@ const char *Value2 = "TEST";
|
||||
// Helpful macros to cut down on the amount of duplicated code
|
||||
#define TEST_OPERATOR(tn,t,on,o,v) void test##tn##on() \
|
||||
{ \
|
||||
QCOMPARE(IByteArray(Value1) o static_cast<t>(Value2), v); \
|
||||
QCOMPARE(static_cast<t>(Value1) o IByteArray(Value1), v); \
|
||||
QCOMPARE(QHttpEngine::IByteArray(Value1) o static_cast<t>(Value2), v); \
|
||||
QCOMPARE(static_cast<t>(Value1) o QHttpEngine::IByteArray(Value1), v); \
|
||||
}
|
||||
#define TEST_TYPE(tn,t) \
|
||||
TEST_OPERATOR(tn, t, Equals, ==, true) \
|
||||
@@ -50,7 +50,7 @@ private Q_SLOTS:
|
||||
|
||||
TEST_TYPE(ConstChar, const char *)
|
||||
TEST_TYPE(QByteArray, QByteArray)
|
||||
TEST_TYPE(IByteArray, IByteArray)
|
||||
TEST_TYPE(IByteArray, QHttpEngine::IByteArray)
|
||||
TEST_TYPE(QString, QString)
|
||||
|
||||
void testContains();
|
||||
@@ -58,7 +58,7 @@ private Q_SLOTS:
|
||||
|
||||
void TestQIByteArray::testContains()
|
||||
{
|
||||
IByteArray v(Value1);
|
||||
QHttpEngine::IByteArray v(Value1);
|
||||
|
||||
QVERIFY(v.contains('t'));
|
||||
QVERIFY(v.contains(Value2));
|
||||
|
||||
@@ -55,7 +55,7 @@ void TestQIODeviceCopier::testQBuffer()
|
||||
QByteArray destData;
|
||||
QBuffer dest(&destData);
|
||||
|
||||
QIODeviceCopier copier(&src, &dest);
|
||||
QHttpEngine::QIODeviceCopier copier(&src, &dest);
|
||||
copier.setBufferSize(2);
|
||||
|
||||
QSignalSpy errorSpy(&copier, SIGNAL(error(QString)));
|
||||
@@ -76,7 +76,7 @@ void TestQIODeviceCopier::testQTcpSocket()
|
||||
QByteArray destData;
|
||||
QBuffer dest(&destData);
|
||||
|
||||
QIODeviceCopier copier(pair.server(), &dest);
|
||||
QHttpEngine::QIODeviceCopier copier(pair.server(), &dest);
|
||||
copier.setBufferSize(2);
|
||||
|
||||
QSignalSpy errorSpy(&copier, SIGNAL(error(QString)));
|
||||
@@ -100,7 +100,7 @@ void TestQIODeviceCopier::testStop()
|
||||
QByteArray destData;
|
||||
QBuffer dest(&destData);
|
||||
|
||||
QIODeviceCopier copier(pair.server(), &dest);
|
||||
QHttpEngine::QIODeviceCopier copier(pair.server(), &dest);
|
||||
|
||||
copier.start();
|
||||
|
||||
@@ -141,7 +141,7 @@ void TestQIODeviceCopier::testRange()
|
||||
QByteArray destData;
|
||||
QBuffer dest(&destData);
|
||||
|
||||
QIODeviceCopier copier(&src, &dest);
|
||||
QHttpEngine::QIODeviceCopier copier(&src, &dest);
|
||||
copier.setBufferSize(bufferSize);
|
||||
copier.setRange(from, to);
|
||||
|
||||
|
||||
@@ -51,9 +51,9 @@ void TestQLocalAuth::testAuth()
|
||||
QTRY_VERIFY(pair.isConnected());
|
||||
|
||||
QSimpleHttpClient client(pair.client());
|
||||
Socket socket(pair.server(), &pair);
|
||||
QHttpEngine::Socket socket(pair.server(), &pair);
|
||||
|
||||
LocalAuthMiddleware localAuth;
|
||||
QHttpEngine::LocalAuthMiddleware localAuth;
|
||||
localAuth.setData(QVariantMap{
|
||||
{CustomName, CustomData}
|
||||
});
|
||||
@@ -67,7 +67,7 @@ void TestQLocalAuth::testAuth()
|
||||
QVERIFY(data.contains("token"));
|
||||
QCOMPARE(data.value(CustomName).toByteArray(), CustomData);
|
||||
|
||||
client.sendHeaders("GET", "/", Socket::HeaderMap{
|
||||
client.sendHeaders("GET", "/", QHttpEngine::Socket::HeaderMap{
|
||||
{HeaderName, data.value("token").toByteArray()}
|
||||
});
|
||||
QTRY_VERIFY(socket.isHeadersParsed());
|
||||
|
||||
@@ -46,7 +46,7 @@ void TestQLocalFile::initTestCase()
|
||||
|
||||
void TestQLocalFile::testOpen()
|
||||
{
|
||||
LocalFile file;
|
||||
QHttpEngine::LocalFile file;
|
||||
QVERIFY(file.open());
|
||||
QVERIFY(file.remove());
|
||||
}
|
||||
|
||||
@@ -37,8 +37,8 @@ public Q_SLOTS:
|
||||
|
||||
void wrongArgumentCount() {}
|
||||
void wrongArgumentType(int) {}
|
||||
void valid(Socket *socket) {
|
||||
socket->writeError(Socket::OK);
|
||||
void valid(QHttpEngine::Socket *socket) {
|
||||
socket->writeError(QHttpEngine::Socket::OK);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -60,19 +60,19 @@ void TestQObjectHandler::testOldConnection_data()
|
||||
|
||||
QTest::newRow("invalid slot")
|
||||
<< QByteArray(SLOT(invalid()))
|
||||
<< static_cast<int>(Socket::InternalServerError);
|
||||
<< static_cast<int>(QHttpEngine::Socket::InternalServerError);
|
||||
|
||||
QTest::newRow("wrong argument count")
|
||||
<< QByteArray(SLOT(wrongArgumentCount()))
|
||||
<< static_cast<int>(Socket::InternalServerError);
|
||||
<< static_cast<int>(QHttpEngine::Socket::InternalServerError);
|
||||
|
||||
QTest::newRow("wrong argument type")
|
||||
<< QByteArray(SLOT(wrongArgumentType(int)))
|
||||
<< static_cast<int>(Socket::InternalServerError);
|
||||
<< static_cast<int>(QHttpEngine::Socket::InternalServerError);
|
||||
|
||||
QTest::newRow("valid")
|
||||
<< QByteArray(SLOT(valid(Socket*)))
|
||||
<< static_cast<int>(Socket::OK);
|
||||
<< static_cast<int>(QHttpEngine::Socket::OK);
|
||||
}
|
||||
|
||||
void TestQObjectHandler::testOldConnection()
|
||||
@@ -80,7 +80,7 @@ void TestQObjectHandler::testOldConnection()
|
||||
QFETCH(QByteArray, slot);
|
||||
QFETCH(int, statusCode);
|
||||
|
||||
QObjectHandler handler;
|
||||
QHttpEngine::QObjectHandler handler;
|
||||
DummyAPI api;
|
||||
|
||||
handler.registerMethod("test", &api, slot.constData());
|
||||
@@ -89,7 +89,7 @@ void TestQObjectHandler::testOldConnection()
|
||||
QTRY_VERIFY(pair.isConnected());
|
||||
|
||||
QSimpleHttpClient client(pair.client());
|
||||
Socket socket(pair.server(), &pair);
|
||||
QHttpEngine::Socket socket(pair.server(), &pair);
|
||||
|
||||
client.sendHeaders("GET", "test");
|
||||
QTRY_VERIFY(socket.isHeadersParsed());
|
||||
@@ -100,18 +100,18 @@ void TestQObjectHandler::testOldConnection()
|
||||
|
||||
void TestQObjectHandler::testNewConnection()
|
||||
{
|
||||
QObjectHandler handler;
|
||||
QHttpEngine::QObjectHandler handler;
|
||||
DummyAPI api;
|
||||
|
||||
// Connect to object slot
|
||||
handler.registerMethod("0", &api, &DummyAPI::valid);
|
||||
|
||||
// Connect to functor
|
||||
handler.registerMethod("1", [](Socket *socket) {
|
||||
socket->writeError(Socket::OK);
|
||||
handler.registerMethod("1", [](QHttpEngine::Socket *socket) {
|
||||
socket->writeError(QHttpEngine::Socket::OK);
|
||||
});
|
||||
handler.registerMethod("2", &api, [](Socket *socket) {
|
||||
socket->writeError(Socket::OK);
|
||||
handler.registerMethod("2", &api, [](QHttpEngine::Socket *socket) {
|
||||
socket->writeError(QHttpEngine::Socket::OK);
|
||||
});
|
||||
|
||||
for (int i = 0; i < 3; ++i) {
|
||||
@@ -119,13 +119,13 @@ void TestQObjectHandler::testNewConnection()
|
||||
QTRY_VERIFY(pair.isConnected());
|
||||
|
||||
QSimpleHttpClient client(pair.client());
|
||||
Socket socket(pair.server(), &pair);
|
||||
QHttpEngine::Socket socket(pair.server(), &pair);
|
||||
|
||||
client.sendHeaders("GET", QByteArray::number(i));
|
||||
QTRY_VERIFY(socket.isHeadersParsed());
|
||||
|
||||
handler.route(&socket, socket.path());
|
||||
QTRY_COMPARE(client.statusCode(), static_cast<int>(Socket::OK));
|
||||
QTRY_COMPARE(client.statusCode(), static_cast<int>(QHttpEngine::Socket::OK));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -47,27 +47,27 @@ private Q_SLOTS:
|
||||
void TestQProxyHandler::testDataPassthrough()
|
||||
{
|
||||
// Create the upstream handler (simple echo)
|
||||
QObjectHandler upstreamHandler;
|
||||
upstreamHandler.registerMethod(Path, [](Socket *socket) {
|
||||
QHttpEngine::QObjectHandler upstreamHandler;
|
||||
upstreamHandler.registerMethod(Path, [](QHttpEngine::Socket *socket) {
|
||||
socket->write(socket->readAll());
|
||||
socket->close();
|
||||
}, true);
|
||||
|
||||
// Create the upstream server and begin listening
|
||||
Server upstreamServer(&upstreamHandler);
|
||||
QHttpEngine::Server upstreamServer(&upstreamHandler);
|
||||
QVERIFY(upstreamServer.listen(QHostAddress::LocalHost));
|
||||
|
||||
// Create the proxy handler
|
||||
ProxyHandler handler(upstreamServer.serverAddress(), upstreamServer.serverPort());
|
||||
QHttpEngine::ProxyHandler handler(upstreamServer.serverAddress(), upstreamServer.serverPort());
|
||||
|
||||
QSocketPair pair;
|
||||
QTRY_VERIFY(pair.isConnected());
|
||||
|
||||
QSimpleHttpClient client(pair.client());
|
||||
Socket socket(pair.server());
|
||||
QHttpEngine::Socket socket(pair.server());
|
||||
|
||||
// Send the headers and wait for them to be parsed
|
||||
Socket::HeaderMap headers{
|
||||
QHttpEngine::Socket::HeaderMap headers{
|
||||
{"Content-Length", QByteArray::number(Data.length())}
|
||||
};
|
||||
client.sendHeaders("POST", QString("/%1").arg(Path).toUtf8(), headers);
|
||||
|
||||
@@ -33,7 +33,7 @@ QSimpleHttpClient::QSimpleHttpClient(QTcpSocket *socket)
|
||||
onReadyRead();
|
||||
}
|
||||
|
||||
void QSimpleHttpClient::sendHeaders(const QByteArray &method, const QByteArray &path, const Socket::HeaderMap &headers)
|
||||
void QSimpleHttpClient::sendHeaders(const QByteArray &method, const QByteArray &path, const QHttpEngine::Socket::HeaderMap &headers)
|
||||
{
|
||||
QByteArray data = method + " " + path + " HTTP/1.0\r\n";
|
||||
for (auto i = headers.constBegin(); i != headers.constEnd(); ++i) {
|
||||
@@ -59,7 +59,7 @@ void QSimpleHttpClient::onReadyRead()
|
||||
// Parse the headers if the double CRLF sequence was found
|
||||
int index = mBuffer.indexOf("\r\n\r\n");
|
||||
if (index != -1) {
|
||||
Parser::parseResponseHeaders(mBuffer.left(index), mStatusCode, mStatusReason, mHeaders);
|
||||
QHttpEngine::Parser::parseResponseHeaders(mBuffer.left(index), mStatusCode, mStatusReason, mHeaders);
|
||||
|
||||
mHeadersParsed = true;
|
||||
mData.append(mBuffer.mid(index + 4));
|
||||
|
||||
@@ -45,7 +45,7 @@ public:
|
||||
|
||||
QSimpleHttpClient(QTcpSocket *socket);
|
||||
|
||||
void sendHeaders(const QByteArray &method, const QByteArray &path, const Socket::HeaderMap &headers=Socket::HeaderMap());
|
||||
void sendHeaders(const QByteArray &method, const QByteArray &path, const QHttpEngine::Socket::HeaderMap &headers = QHttpEngine::Socket::HeaderMap());
|
||||
void sendData(const QByteArray &data);
|
||||
|
||||
int statusCode() const {
|
||||
@@ -56,7 +56,7 @@ public:
|
||||
return mStatusReason;
|
||||
}
|
||||
|
||||
Socket::HeaderMap headers() const {
|
||||
QHttpEngine::Socket::HeaderMap headers() const {
|
||||
return mHeaders;
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ private:
|
||||
|
||||
int mStatusCode;
|
||||
QByteArray mStatusReason;
|
||||
Socket::HeaderMap mHeaders;
|
||||
QHttpEngine::Socket::HeaderMap mHeaders;
|
||||
QByteArray mData;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user