AusweisApp2
 Alle Klassen Namensbereiche Dateien Funktionen Variablen Typdefinitionen Aufzählungen Aufzählungswerte Propertys Freundbeziehungen Makrodefinitionen
HttpRequest.h
gehe zur Dokumentation dieser Datei
1 
7 #pragma once
8 
9 #include "http_parser.h"
10 #include "HttpResponse.h"
11 
12 #include <QAbstractSocket>
13 #include <QByteArray>
14 #include <QMap>
15 #include <QObject>
16 #include <QSharedPointer>
17 #include <QUrl>
18 
19 class test_WebserviceActivationHandler;
20 
21 namespace governikus
22 {
23 
25  : public QObject
26 {
27  Q_OBJECT
28 
29  private:
30  friend class ::test_WebserviceActivationHandler;
31 
32  static int onMessageBegin(http_parser* pParser);
33  static int onMessageComplete(http_parser* pParser);
34  static int onHeadersComplete(http_parser* pParser);
35  static int onHeaderField(http_parser* pParser, const char* pPos, size_t pLength);
36  static int onHeaderValue(http_parser* pParser, const char* pPos, size_t pLength);
37  static int onBody(http_parser* pParser, const char* pPos, size_t pLength);
38  static int onUrl(http_parser* pParser, const char* pPos, size_t pLength);
39 
40  static inline void add(QByteArray& pDest, const char* pPos, size_t pLength)
41  {
42  pDest += QByteArray(pPos, static_cast<int>(pLength));
43  }
44 
45 
46  QByteArray mUrl;
47  QMap<QByteArray, QByteArray> mHeader;
48  QByteArray mBody;
49  QSharedPointer<QAbstractSocket> mSocket;
50  http_parser mParser;
51  http_parser_settings mParserSettings;
52 
53  bool mFinished;
54  QByteArray mCurrentHeaderField;
55  QByteArray mCurrentHeaderValue;
56 
57  void insertHeader();
58 
59  public:
60  HttpRequest(QAbstractSocket* pSocket, QObject* pParent = nullptr);
61  virtual ~HttpRequest();
62 
63  bool isConnected() const;
64 
65  QByteArray getMethod() const;
66  bool isUpgrade() const;
67  QByteArray getHeader(const QByteArray& pKey) const;
68  const QMap<QByteArray, QByteArray>& getHeader() const;
69  QUrl getUrl() const;
70  const QByteArray& getBody() const;
71 
72  bool send(const HttpResponse& pResponse);
73 
74  private Q_SLOTS:
75  void onReadyRead();
76 
77  Q_SIGNALS:
78  void fireMessageComplete(HttpRequest* pSelf, QSharedPointer<QAbstractSocket> pSocket);
79 };
80 
81 } /* namespace governikus */
virtual ~HttpRequest()
Definition: HttpRequest.cpp:49
Definition: http_parser.h:222
bool isUpgrade() const
Definition: HttpRequest.cpp:66
void fireMessageComplete(HttpRequest *pSelf, QSharedPointer< QAbstractSocket > pSocket)
const QMap< QByteArray, QByteArray > & getHeader() const
Definition: HttpRequest.cpp:78
Definition: HttpRequest.h:24
Definition: http_parser.h:253
const QByteArray & getBody() const
Definition: HttpRequest.cpp:90
Definition: HttpResponse.h:17
bool isConnected() const
Definition: HttpRequest.cpp:54
bool send(const HttpResponse &pResponse)
Definition: HttpRequest.cpp:96
HttpRequest(QAbstractSocket *pSocket, QObject *pParent=nullptr)
Definition: HttpRequest.cpp:15
QByteArray getMethod() const
Definition: HttpRequest.cpp:60
QUrl getUrl() const
Definition: HttpRequest.cpp:84