AusweisApp2
Lade ...
Suche ...
Keine Treffer
HttpRequest.h
gehe zur Dokumentation dieser Datei
1
7#pragma once
8
9#include "HttpResponse.h"
10
11#include <http_parser.h>
12#include <QByteArray>
13#include <QMap>
14#include <QObject>
15#include <QScopedPointer>
16#include <QTcpSocket>
17#include <QUrl>
18
19class test_WebserviceActivationHandler;
20class test_WebserviceActivationContext;
21
22namespace governikus
23{
24
26 : public QObject
27{
28 Q_OBJECT
29
30 private:
31 friend class ::test_WebserviceActivationHandler;
32 friend class ::test_WebserviceActivationContext;
33 friend class HttpServer;
34
35 static int onMessageBegin(http_parser* pParser);
36 static int onMessageComplete(http_parser* pParser);
37 static int onHeadersComplete(http_parser* pParser);
38 static int onHeaderField(http_parser* pParser, const char* const pPos, size_t pLength);
39 static int onHeaderValue(http_parser* pParser, const char* const pPos, size_t pLength);
40 static int onBody(http_parser* pParser, const char* const pPos, size_t pLength);
41 static int onUrl(http_parser* pParser, const char* const pPos, size_t pLength);
42
43 static inline void add(QByteArray& pDest, const char* const pPos, size_t pLength)
44 {
45 pDest += QByteArray(pPos, static_cast<int>(pLength));
46 }
47
48
49 QByteArray mUrl;
50 QMap<QByteArray, QByteArray> mHeader;
51 QByteArray mBody;
52 QScopedPointer<QTcpSocket, QScopedPointerDeleteLater> mSocket;
53 http_parser mParser;
54 http_parser_settings mParserSettings;
55
56 bool mSocketDisconnected;
57 bool mFinished;
58 QByteArray mCurrentHeaderField;
59 QByteArray mCurrentHeaderValue;
60
61 void insertHeader();
62
63 public:
64 HttpRequest(QTcpSocket* pSocket, QObject* pParent = nullptr);
65 ~HttpRequest() override;
66
67 [[nodiscard]] bool isConnected() const;
68
69 [[nodiscard]] QByteArray getMethod() const;
70 [[nodiscard]] bool isUpgrade() const;
71 [[nodiscard]] QByteArray getHeader(const QByteArray& pKey) const;
72 [[nodiscard]] const QMap<QByteArray, QByteArray>& getHeader() const;
73 [[nodiscard]] QUrl getUrl() const;
74 [[nodiscard]] const QByteArray& getBody() const;
75
76 bool send(const HttpResponse& pResponse);
77
78 QTcpSocket* take();
79
80 private Q_SLOTS:
81 void onReadyRead();
82 void onSocketDisconnected();
83
84 Q_SIGNALS:
86};
87
88} // namespace governikus
Definition: HttpRequest.h:27
QTcpSocket * take()
Definition: HttpRequest.cpp:48
bool isConnected() const
Definition: HttpRequest.cpp:72
void fireMessageComplete(HttpRequest *pSelf)
bool send(const HttpResponse &pResponse)
Definition: HttpRequest.cpp:114
QUrl getUrl() const
Definition: HttpRequest.cpp:102
const QMap< QByteArray, QByteArray > & getHeader() const
Definition: HttpRequest.cpp:96
const QByteArray & getBody() const
Definition: HttpRequest.cpp:108
~HttpRequest() override
Definition: HttpRequest.cpp:63
bool isUpgrade() const
Definition: HttpRequest.cpp:84
QByteArray getMethod() const
Definition: HttpRequest.cpp:78
Definition: HttpResponse.h:17
Definition: HttpServer.h:22
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:15
Definition: http_parser.h:328
Definition: http_parser.h:296