OSDN Git Service

a2移行前のバックアップ。
[wordring-tm/wordring-tm.git] / proxy / tmhttp.h
1 #ifndef TMHTTP_H
2 #define TMHTTP_H
3
4 #include "httphandler.h"
5 #include "html.h"
6
7 #include <QObject>
8 #include <QThread>
9 #include <QMutex>
10 #include <QUrl>
11
12 QT_BEGIN_NAMESPACE
13 class QNetworkAccessManager;
14 class QNetworkCookieJar;
15 class QNetworkReply;
16 QT_END_NAMESPACE
17
18 class Settings;
19 class HtmlDocument;
20 class HtmlNode;
21
22 namespace TM
23 {
24
25 class ProxyHandler;
26
27 class ProxyContext : public QObject
28 {
29         Q_OBJECT
30
31 public:
32         ProxyContext(Settings *settings, quint16 http, quint16 socket);
33
34         QNetworkAccessManager* network_access_manager();
35         quint16 http_port() const;
36         quint16 socket_port() const;
37         QString prefix() const;
38         QString js_file() const;
39         QString css_file() const;
40
41 private:
42         Settings *m_settings;
43
44         QNetworkAccessManager *m_manager;
45         QNetworkCookieJar *m_cookie;
46
47         quint16 m_http_port;
48         quint16 m_socket_port;
49         QString m_prefix;
50         QString m_js_file;
51         QString m_css_file;
52 };
53
54 class ProxyModule : public HttpModule
55 {
56         Q_OBJECT
57
58 public:
59         ProxyModule(Settings *settings, quint16 http, quint16 socket, QObject *parent);
60         ~ProxyModule();
61
62         virtual HttpHandler* create_handler(QByteArray method, QByteArray url);
63         virtual void destroy_handler(HttpHandler *handler);
64
65 private:
66         QThread *m_thread;
67         ProxyContext *m_context;
68 };
69
70 class ProxyHandler : public HttpHandler
71 {
72         Q_OBJECT
73
74 public:
75         ProxyHandler(ProxyContext *context);
76         ~ProxyHandler();
77
78         virtual int run();
79
80 private slots:
81         void onNetworkReplyFinished();
82
83 private:
84         int redirect();
85         int response();
86
87         Html::pointer sanitize(Html::pointer p);
88         QString create_href(QString href);
89         void create_paragraph(Html::pointer begin_, Html::pointer tail_);
90
91         QString host() const;
92         QString prefix() const;
93
94 private:
95         ProxyContext *m_context;
96         QNetworkReply *m_reply;
97         QUrl m_targetUrl;
98 };
99
100 class DefaultHtmlModule : public HttpModule
101 {
102         Q_OBJECT
103 public:
104         DefaultHtmlModule(Settings *settings, quint16 port, QObject *parent);
105         ~DefaultHtmlModule();
106
107         HttpHandler* create_handler(QByteArray method, QByteArray url);
108         void destroy_handler(HttpHandler *handler);
109
110 private:
111         Settings *m_settings;
112         QByteArray m_html;
113         quint16 m_port;
114 };
115
116 class DefaultHtmlHandler : public HttpHandler
117 {
118         Q_OBJECT
119 public:
120         DefaultHtmlHandler(Settings *settings, quint16 port, QByteArray html, DefaultHtmlModule *module);
121         ~DefaultHtmlHandler();
122
123         int run();
124
125 private:
126         Settings *m_settings;
127         QByteArray m_html;
128         quint16 m_port;
129 };
130
131 } // namespace TM
132
133 #endif // TMHTTP_H