AusweisApp
Lade ...
Suche ...
Keine Treffer
HttpRequest.h
gehe zur Dokumentation dieser Datei
1
9#pragma once
10
11#include "HttpResponse.h"
12
13#include <QByteArray>
14#include <QMap>
15#include <QObject>
16#include <QPointer>
17#include <QTcpSocket>
18#include <QUrl>
19
20#include <http_parser.h>
21
22#include <memory>
23
24
25class test_HttpRequest;
26
27
28namespace governikus
29{
30
32 : public QObject
33{
35 friend class HttpServer;
36 friend class ::test_HttpRequest;
37
38 private:
39 [[nodiscard]] static int onMessageBegin(http_parser* pParser);
40 [[nodiscard]] static int onMessageComplete(http_parser* pParser);
41 [[nodiscard]] static int onHeadersComplete(http_parser* pParser);
42 [[nodiscard]] static int onHeaderField(http_parser* pParser, const char* const pPos, size_t pLength);
43 [[nodiscard]] static int onHeaderValue(http_parser* pParser, const char* const pPos, size_t pLength);
44 [[nodiscard]] static int onBody(http_parser* pParser, const char* const pPos, size_t pLength);
45 [[nodiscard]] static int onUrl(http_parser* pParser, const char* const pPos, size_t pLength);
46
47 static inline void add(QByteArray& pDest, const char* const pPos, size_t pLength)
48 {
49 pDest += QByteArray(pPos, static_cast<int>(pLength));
50 }
51
52
53 QByteArray mUrl;
55 QByteArray mBody;
57 http_parser mParser;
58 http_parser_settings mParserSettings;
59
60 bool mFinished;
61 QByteArray mCurrentHeaderField;
62 QByteArray mCurrentHeaderValue;
63
64 void insertHeader();
65
66 public:
67 HttpRequest(QTcpSocket* pSocket, QObject* pParent = nullptr);
68 ~HttpRequest() override;
69
70 [[nodiscard]] bool isConnected() const;
71
72 [[nodiscard]] QByteArray getMethod() const;
74 [[nodiscard]] bool isUpgrade() const;
77 [[nodiscard]] QUrl getUrl() const;
78 [[nodiscard]] const QByteArray& getBody() const;
79 [[nodiscard]] quint16 getPeerPort() const;
80 [[nodiscard]] quint16 getLocalPort() const;
82
83 bool send(const HttpResponse& pResponse);
84 bool send(const QByteArray& pResponse);
85
86 QTcpSocket* take();
87
88 private Q_SLOTS:
89 void onReadyRead();
90
93 void fireSocketStateChanged(QAbstractSocket::SocketState pSocketState);
95};
96
97} // namespace governikus
Definition HttpRequest.h:33
void triggerSocketBuffer()
Definition HttpRequest.cpp:130
QTcpSocket * take()
Definition HttpRequest.cpp:47
bool isConnected() const
Definition HttpRequest.cpp:70
void fireMessageComplete(HttpRequest *pSelf)
bool send(const HttpResponse &pResponse)
Definition HttpRequest.cpp:136
quint16 getPeerPort() const
Definition HttpRequest.cpp:118
HttpRequest(QTcpSocket *pSocket, QObject *pParent=nullptr)
Definition HttpRequest.cpp:15
QUrl getUrl() const
Definition HttpRequest.cpp:106
quint16 getLocalPort() const
Definition HttpRequest.cpp:124
void fireSocketStateChanged(QAbstractSocket::SocketState pSocketState)
const QMap< QByteArray, QByteArray > & getHeader() const
Definition HttpRequest.cpp:100
const QByteArray & getBody() const
Definition HttpRequest.cpp:112
~HttpRequest() override
Definition HttpRequest.cpp:57
http_method getHttpMethod() const
Definition HttpRequest.cpp:82
bool isUpgrade() const
Definition HttpRequest.cpp:88
void fireSocketBuffer(const QByteArray &pBuffer)
QByteArray getMethod() const
Definition HttpRequest.cpp:76
Definition HttpResponse.h:19
Definition HttpServer.h:24
http_method
Definition http_parser.h:208
Implementation of GeneralAuthenticate response APDUs.
Definition CommandApdu.h:17
QSharedPointer< T > decodeObject(const QByteArray &pData, bool pLogging=true)
Template function for decoding an OpenSSL type from DER encoded QByteArray.
Definition ASN1TemplateUtil.h:114
Definition http_parser.h:328
Definition http_parser.h:296