Remoto - VFS: VFS_httpd.h Source File
Remoto - VFS
VFS_httpd.h
Go to the documentation of this file.
1 #ifndef VFS_HTTPD_H
2 #define VFS_HTTPD_H
3 
4 #include <QUrl>
5 
6 #include "VFS.h"
8 
9 #include "qhttpserver/src/qhttprequest.h"
10 #include "qhttpserver/src/qhttpresponse.h"
11 #include "qhttpserver/src/qhttpserver.h"
12 #include "qhttpserver/src/qhttpconnection.h"
13 
14 class VFS_httpd : public VFS_tcp_server
15 {
16  Q_OBJECT
17 
18  public:
19  VFS_httpd(quint16 port, QHostAddress addr=QHostAddress::Any, bool ssl=false, QString sslCertPath="", QString sslKeyPath="");
20  virtual ~VFS_httpd();
21 
22  virtual bool isContainer();
23 
24  static QHash<QString, QString> MIME_TYPES;
25 
26  protected:
27  QHttpServer _httpd;
28 
29  void initMimes();
30 
31  private:
32 
33  protected slots:
34  virtual bool listen();
35  virtual void createNewConnection();
36  virtual void handle(QHttpRequest *req, QHttpResponse *resp);
37 
38  //...a good idea for later.
39  // void addOutstandingRequest();
40  // void timeoutOutstandingRequest();
41 
42 };
43 
44 class VFS_httpd_responder : public QObject
45 {
46  Q_OBJECT
47 
48  public:
49  VFS_httpd_responder(QHttpRequest *req, QHttpResponse *resp);
50  virtual ~VFS_httpd_responder();
51 
52  virtual void respond();
53 
54  QHttpRequest *_m_req;
55  QHttpResponse *_m_resp;
56 
57  QUrl _url;
58  QString _path;
59  QString _mime;
60  quint64 _size;
61  int _status;
62 
63  virtual void validatePath(QUrl url);
64 
65  protected:
66  virtual QByteArray errorPage();
67 
68  signals:
69  void done();
70 
71  protected slots:
72  virtual void accumulate(const QByteArray&);
73  //void reply();
74 
75 };
76 
77 #endif // VFS_HTTPD_H
78 
Holds the request and response objects for future use.
Definition: VFS_httpd.h:45
QHttpResponse * _m_resp
http response object
Definition: VFS_httpd.h:55
QUrl _url
requested url
Definition: VFS_httpd.h:57
virtual void accumulate(const QByteArray &)
This seems to be used during an http push request.
Definition: VFS_httpd.cpp:279
QString _path
path component of url
Definition: VFS_httpd.h:58
void done()
signal that this responder is complete, and can be deleted
VFS_httpd_responder(QHttpRequest *req, QHttpResponse *resp)
Definition: VFS_httpd.cpp:206
quint64 _size
the size of the response data
Definition: VFS_httpd.h:60
QHttpRequest * _m_req
http request object
Definition: VFS_httpd.h:54
virtual QByteArray errorPage()
The default error page.
Definition: VFS_httpd.cpp:296
virtual ~VFS_httpd_responder()
VFS_httpd_responder destructor.
Definition: VFS_httpd.cpp:221
virtual void validatePath(QUrl url)
Validates the incoming path.
Definition: VFS_httpd.cpp:263
virtual void respond()
Send an http response back to the client.
Definition: VFS_httpd.cpp:236
QString _mime
mime type to send
Definition: VFS_httpd.h:59
int _status
http status
Definition: VFS_httpd.h:61
Creates httpd server node for VFS.
Definition: VFS_httpd.h:15
VFS_httpd(quint16 port, QHostAddress addr=QHostAddress::Any, bool ssl=false, QString sslCertPath="", QString sslKeyPath="")
VFS_httpd constructor.
Definition: VFS_httpd.cpp:33
virtual bool isContainer()
A VFS_httpd node cannot contain children.
Definition: VFS_httpd.cpp:52
QHttpServer _httpd
QHttpServer instance.
Definition: VFS_httpd.h:27
virtual void createNewConnection()
The server has received a new http connection request.
Definition: VFS_httpd.cpp:136
virtual void handle(QHttpRequest *req, QHttpResponse *resp)
Handle an incoming http request.
Definition: VFS_httpd.cpp:168
virtual ~VFS_httpd()
Definition: VFS_httpd.cpp:43
void initMimes()
Initialize the mime map.
Definition: VFS_httpd.cpp:80
virtual bool listen()
Start listening for incoming connections.
Definition: VFS_httpd.cpp:109
static QHash< QString, QString > MIME_TYPES
The mime type map.
Definition: VFS_httpd.h:24
Open a listening TCP port for other clients to connect to.