add setRawHeader to Rquest API
[pykit.git] / Publisher.hh
1 // $Id$
2 //
3 // Copyright (C) 2010
4 //     Stefan Bund <info@j32.de>
5
6 /** \file
7     \brief InternalNetworkAccessManager public header */
8
9 #ifndef HH_PyKit_Publisher_
10 #define HH_PyKit_Publisher_ 1
11
12 // Custom includes
13 #include <QNetworkAccessManager>
14 #include <QNetworkRequest>
15 #include <QNetworkReply>
16 #include <QBuffer>
17 #include <boost/noncopyable.hpp>
18
19 //#include "Publisher.mpp"
20 ///////////////////////////////hh.p////////////////////////////////////////
21
22 namespace pykit {
23
24     namespace detail { class InternalServerReply; }
25
26     class Request
27     {
28     public:
29         void write(std::string const & data);
30         void reset();
31
32         void setContentType(std::string const & contentType);
33         void setLocation(std::string const & location);
34         void setHeader(std::string const & header, std::string const & value);
35
36         QUrl url() const;
37         QByteArray postData() const;
38         QByteArray operation() const;
39         QString postContentType() const;
40
41     private:
42         Request(detail::InternalServerReply & reply);
43
44         detail::InternalServerReply & reply_;
45
46         friend class detail::InternalServerReply;
47     };
48
49     class Publisher
50         : boost::noncopyable
51     {
52     public:
53         virtual ~Publisher() {}
54         virtual void publish(Request & request) = 0;
55     };
56
57     class InternalNetworkAccessManager
58         : public QNetworkAccessManager
59     {
60         Q_OBJECT;
61     public:
62         InternalNetworkAccessManager(QNetworkAccessManager * manager, QObject * parent,
63                                      Publisher * publisher);
64
65         QNetworkReply * createRequest(Operation operation, QNetworkRequest const & request,
66                                       QIODevice * device);
67
68     private:
69         Publisher * publisher_;
70     };
71
72 }
73
74 ///////////////////////////////hh.e////////////////////////////////////////
75 //#include "Publisher.cci"
76 //#include "Publisher.ct"
77 //#include "Publisher.cti"
78 #endif
79
80 \f
81 // Local Variables:
82 // mode: c++
83 // fill-column: 100
84 // comment-column: 40
85 // c-file-style: "j32"
86 // indent-tabs-mode: nil
87 // ispell-local-dictionary: "american"
88 // compile-command: "scons -U"
89 // End: