11/*
22 This file is part of libhttpserver
3- Copyright (C) 2014 Chris Love
3+ Copyright (C) 2014 Sebastiano Merlino
44
55 This library is free software; you can redistribute it and/or
66 modify it under the terms of the GNU Lesser General Public
2525
2626using namespace httpserver ;
2727
28+ bool verbose=false ;
29+
2830class service_resource : public http_resource <service_resource> {
2931public:
3032 service_resource ();
@@ -63,7 +65,11 @@ service_resource::render_GET(const http_request &req, http_response** res)
6365{
6466 std::cout << " service_resource::render_GET()" << std::endl;
6567
66- *res = new http_response (http_response_builder (" GET response" , 200 ).string_response ());
68+ if (verbose) std::cout << req;
69+
70+ *res = new http_response (http_response_builder (" GET response" , 200 ).string_response ());
71+
72+ if (verbose) std::cout << **res;
6773}
6874
6975
@@ -72,7 +78,11 @@ service_resource::render_PUT(const http_request &req, http_response** res)
7278{
7379 std::cout << " service_resource::render_PUT()" << std::endl;
7480
75- *res = new http_response (http_response_builder (" PUT response" , 200 ).string_response ());
81+ if (verbose) std::cout << req;
82+
83+ *res = new http_response (http_response_builder (" PUT response" , 200 ).string_response ());
84+
85+ if (verbose) std::cout << **res;
7686}
7787
7888
@@ -81,14 +91,22 @@ service_resource::render_POST(const http_request &req, http_response** res)
8191{
8292 std::cout << " service_resource::render_POST()" << std::endl;
8393
84- *res = new http_response (http_response_builder (" POST response" , 200 ).string_response ());
94+ if (verbose) std::cout << req;
95+
96+ *res = new http_response (http_response_builder (" POST response" , 200 ).string_response ());
97+
98+ if (verbose) std::cout << **res;
8599}
86100void
87101service_resource::render (const http_request &req, http_response** res)
88102{
89103 std::cout << " service_resource::render()" << std::endl;
90104
91- *res = new http_response (http_response_builder (" generic response" , 200 ).string_response ());
105+ if (verbose) std::cout << req;
106+
107+ *res = new http_response (http_response_builder (" generic response" , 200 ).string_response ());
108+
109+ if (verbose) std::cout << **res;
92110}
93111
94112
@@ -97,31 +115,53 @@ service_resource::render_HEAD(const http_request &req, http_response** res)
97115{
98116 std::cout << " service_resource::render_HEAD()" << std::endl;
99117
100- *res = new http_response (http_response_builder (" HEAD response" , 200 ).string_response ());
118+ if (verbose) std::cout << req;
119+
120+ *res = new http_response (http_response_builder (" HEAD response" , 200 ).string_response ());
121+
122+ if (verbose) std::cout << **res;
101123}
102124
103125void
104126service_resource::render_OPTIONS (const http_request &req, http_response** res)
105127{
106128 std::cout << " service_resource::render_OPTIONS()" << std::endl;
107129
108- *res = new http_response (http_response_builder (" OPTIONS response" , 200 ).string_response ());
130+ if (verbose) std::cout << req;
131+
132+ *res = new http_response (http_response_builder (" OPTIONS response" , 200 ).string_response ());
133+
134+ if (verbose) std::cout << **res;
109135}
110136
111137void
112138service_resource::render_CONNECT (const http_request &req, http_response** res)
113139{
114140 std::cout << " service_resource::render_CONNECT()" << std::endl;
115141
116- *res = new http_response (http_response_builder (" CONNECT response" , 200 ).string_response ());
142+ if (verbose) std::cout << req;
143+
144+ *res = new http_response (http_response_builder (" CONNECT response" , 200 ).string_response ());
145+
146+ if (verbose) std::cout << **res;
117147}
118148
119149void
120150service_resource::render_DELETE (const http_request &req, http_response** res)
121151{
122152 std::cout << " service_resource::render_DELETE()" << std::endl;
123153
124- *res = new http_response (http_response_builder (" DELETE response" , 200 ).string_response ());
154+ if (verbose) std::cout << req;
155+
156+ *res = new http_response (http_response_builder (" DELETE response" , 200 ).string_response ());
157+
158+ if (verbose) std::cout << **res;
159+ }
160+
161+ void usage ()
162+ {
163+ std::cout << " Usage:" << std::endl
164+ << " service [-p <port>][-s [-k <keyFileName>][-c <certFileName>]][-v]" << std::endl;
125165}
126166
127167int main (int argc, char **argv)
@@ -132,7 +172,7 @@ int main(int argc, char **argv)
132172 const char *cert=" cert.pem" ;
133173 bool secure=false ;
134174
135- while ((c = getopt (argc,argv," p:k:c:s " )) != EOF) {
175+ while ((c = getopt (argc,argv," p:k:c:sv? " )) != EOF) {
136176 switch (c) {
137177 case ' p' :
138178 port=strtoul (optarg,NULL ,10 );
@@ -145,8 +185,13 @@ int main(int argc, char **argv)
145185 break ;
146186 case ' s' :
147187 secure=true ;
188+ break ;
189+ case ' v' :
190+ verbose=true ;
148191 break ;
149192 default :
193+ usage ();
194+ exit (1 );
150195 break ;
151196 }
152197 }
0 commit comments