typo fix
[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         void setStatusCode(int code);
36
37         QUrl url() const;
38         QByteArray postData() const;
39         QByteArray operation() const;
40         QString postContentType() const;
41
42     private:
43         Request(detail::InternalServerReply & reply);
44
45         detail::InternalServerReply & reply_;
46
47         friend class detail::InternalServerReply;
48     };
49
50     class Publisher
51         : boost::noncopyable
52     {
53     public:
54         virtual ~Publisher() {}
55         virtual void publish(Request & request) = 0;
56     };
57
58     class InternalNetworkAccessManager
59         : public QNetworkAccessManager
60     {
61         Q_OBJECT;
62     public:
63         InternalNetworkAccessManager(QNetworkAccessManager * manager, QObject * parent,
64                                      Publisher * publisher);
65
66         QNetworkReply * createRequest(Operation operation, QNetworkRequest const & request,
67                                       QIODevice * device);
68
69     private:
70         Publisher * publisher_;
71     };
72
73 }
74
75 ///////////////////////////////hh.e////////////////////////////////////////
76 //#include "Publisher.cci"
77 //#include "Publisher.ct"
78 //#include "Publisher.cti"
79 #endif
80
81 \f
82 // Local Variables:
83 // mode: c++
84 // fill-column: 100
85 // comment-column: 40
86 // c-file-style: "j32"
87 // indent-tabs-mode: nil
88 // ispell-local-dictionary: "american"
89 // compile-command: "scons -U"
90 // End: