Kea  1.5.0
request.h
Go to the documentation of this file.
1 // Copyright (C) 2016-2018 Internet Systems Consortium, Inc. ("ISC")
2 //
3 // This Source Code Form is subject to the terms of the Mozilla Public
4 // License, v. 2.0. If a copy of the MPL was not distributed with this
5 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
6 
7 #ifndef HTTP_REQUEST_H
8 #define HTTP_REQUEST_H
9 
10 #include <http/http_message.h>
11 #include <http/request_context.h>
12 #include <boost/shared_ptr.hpp>
13 #include <cstdint>
14 
15 namespace isc {
16 namespace http {
17 
20 public:
21  HttpRequestError(const char* file, size_t line, const char* what) :
22  HttpMessageError(file, line, what) { };
23 };
24 
25 class HttpRequest;
26 
28 typedef boost::shared_ptr<HttpRequest> HttpRequestPtr;
29 
31 typedef boost::shared_ptr<const HttpRequest> ConstHttpRequestPtr;
32 
48 class HttpRequest : public HttpMessage {
49 public:
50 
52  enum class Method {
53  HTTP_GET,
54  HTTP_POST,
55  HTTP_HEAD,
56  HTTP_PUT,
61  };
62 
64  HttpRequest();
65 
71  HttpRequest(const Method& method, const std::string& uri, const HttpVersion& version);
72 
80  const HttpRequestContextPtr& context() const {
81  return (context_);
82  }
83 
90  void requireHttpMethod(const HttpRequest::Method& method);
91 
101  virtual void create();
102 
108  virtual void finalize();
109 
111  virtual void reset();
112 
114  Method getMethod() const;
115 
117  std::string getUri() const;
118 
119 
121  std::string getBody() const;
122 
124  std::string toBriefString() const;
125 
130  virtual std::string toString() const;
131 
141  bool isPersistent() const;
142 
143 protected:
144 
152  Method methodFromString(std::string method) const;
153 
159  std::string methodToString(const HttpRequest::Method& method) const;
160 
164  std::set<Method> required_methods_;
165 
168 
172 };
173 
174 }
175 }
176 
177 #endif
isc::http::ConstHttpRequestPtr
boost::shared_ptr< const HttpRequest > ConstHttpRequestPtr
Pointer to the const HttpRequest object.
Definition: request.h:31
isc::http::HttpRequest::reset
virtual void reset()
Reset the state of the object.
Definition: request.cc:126
version
int version()
returns Kea hooks version.
Definition: high_availability/version.cc:13
isc::http::HttpRequest::Method::HTTP_OPTIONS
@ HTTP_OPTIONS
request_context.h
isc::http::HttpMessageError
Generic exception thrown by HttpMessage class.
Definition: http_message.h:22
isc::http::HttpRequest::getMethod
Method getMethod() const
Returns HTTP method of the request.
Definition: request.cc:134
isc::http::HttpRequest::Method::HTTP_PUT
@ HTTP_PUT
isc::http::HttpRequest::context_
HttpRequestContextPtr context_
Pointer to the HttpRequestContext holding parsed data.
Definition: request.h:171
isc::http::HttpRequest::required_methods_
std::set< Method > required_methods_
Set of required HTTP methods.
Definition: request.h:164
isc::http::HttpRequest::Method::HTTP_HEAD
@ HTTP_HEAD
isc::http::HttpRequestPtr
boost::shared_ptr< HttpRequest > HttpRequestPtr
Pointer to the HttpRequest object.
Definition: request.h:25
isc::http::HttpRequest::methodFromString
Method methodFromString(std::string method) const
Converts HTTP method specified in textual format to Method.
Definition: request.cc:205
isc::http::HttpVersion
HTTP protocol version.
Definition: http_types.h:14
isc
Defines the logger used by the top-level component of kea-dhcp-ddns.
Definition: agent_parser.cc:144
isc::http::HttpRequest
Represents HTTP request message.
Definition: request.h:48
isc::http::HttpRequestError
Generic exception thrown by HttpRequest class.
Definition: request.h:19
isc::Exception::what
virtual const char * what() const
Returns a C-style character string of the cause of the exception.
Definition: exceptions/exceptions.cc:32
isc::http::HttpRequest::HttpRequest
HttpRequest()
Constructor for inbound HTTP request.
Definition: request.cc:24
isc::http::HttpRequest::method_
Method method_
HTTP method of the request.
Definition: request.h:167
isc::http::HttpRequest::toString
virtual std::string toString() const
Returns HTTP message as string.
Definition: request.cc:162
isc::http::HttpMessage
Base class for HttpRequest and HttpResponse.
Definition: http_message.h:62
isc::http::HttpRequest::methodToString
std::string methodToString(const HttpRequest::Method &method) const
Converts HTTP method to string.
Definition: request.cc:227
isc::http::HttpRequest::Method::HTTP_METHOD_UNKNOWN
@ HTTP_METHOD_UNKNOWN
isc::http::HttpRequest::Method::HTTP_DELETE
@ HTTP_DELETE
isc::http::HttpRequest::getBody
std::string getBody() const
Returns HTTP message body as string.
Definition: request.cc:146
isc::http::HttpRequest::isPersistent
bool isPersistent() const
Checks if the client has requested persistent connection.
Definition: request.cc:183
isc::http::HttpRequest::Method::HTTP_POST
@ HTTP_POST
isc::http::HttpRequest::requireHttpMethod
void requireHttpMethod(const HttpRequest::Method &method)
Specifies an HTTP method allowed for the request.
Definition: request.cc:42
isc::http::HttpRequestError::HttpRequestError
HttpRequestError(const char *file, size_t line, const char *what)
Definition: request.h:21
isc::http::HttpRequest::Method::HTTP_CONNECT
@ HTTP_CONNECT
isc::http::HttpRequest::context
const HttpRequestContextPtr & context() const
Returns pointer to the HttpRequestContext.
Definition: request.h:80
isc::http::HttpRequest::finalize
virtual void finalize()
Completes creation of the HTTP request.
Definition: request.cc:115
isc::http::HttpRequest::create
virtual void create()
Commits information held in the context into the request.
Definition: request.cc:47
isc::http::HttpRequest::toBriefString
std::string toBriefString() const
Returns HTTP method, URI and HTTP version as a string.
Definition: request.cc:152
isc::http::HttpRequestContextPtr
boost::shared_ptr< HttpRequestContext > HttpRequestContextPtr
Pointer to the HttpRequestContext.
Definition: request_context.h:39
isc::http::HttpRequest::Method
Method
HTTP methods.
Definition: request.h:52
http_message.h
isc::http::HttpRequest::Method::HTTP_GET
@ HTTP_GET
isc::http::HttpRequest::getUri
std::string getUri() const
Returns HTTP request URI.
Definition: request.cc:140