Kea  1.9.9-git
request.h
Go to the documentation of this file.
1 // Copyright (C) 2016-2020 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 
11 #include <http/basic_auth.h>
12 #include <http/http_message.h>
13 #include <http/request_context.h>
14 #include <boost/shared_ptr.hpp>
15 #include <cstdint>
16 
17 namespace isc {
18 namespace http {
19 
22 public:
23  HttpRequestError(const char* file, size_t line, const char* what) :
24  HttpMessageError(file, line, what) { };
25 };
26 
28 
30 typedef boost::shared_ptr<HttpRequest> HttpRequestPtr;
31 
50 public:
51 
53  enum class Method {
54  HTTP_GET,
55  HTTP_POST,
56  HTTP_HEAD,
57  HTTP_PUT,
62  };
63 
65  HttpRequest();
66 
79  HttpRequest(const Method& method, const std::string& uri, const HttpVersion& version,
80  const HostHttpHeader& host_header = HostHttpHeader(),
81  const BasicHttpAuthPtr& basic_auth = BasicHttpAuthPtr());
82 
90  const HttpRequestContextPtr& context() const {
91  return (context_);
92  }
93 
100  void requireHttpMethod(const HttpRequest::Method& method);
101 
111  virtual void create();
112 
118  virtual void finalize();
119 
121  virtual void reset();
122 
124  Method getMethod() const;
125 
127  std::string getUri() const;
128 
129 
131  std::string getBody() const;
132 
134  std::string toBriefString() const;
135 
140  virtual std::string toString() const;
141 
151  bool isPersistent() const;
152 
153 protected:
154 
162  Method methodFromString(std::string method) const;
163 
169  std::string methodToString(const HttpRequest::Method& method) const;
170 
174  std::set<Method> required_methods_;
175 
178 
182 };
183 
184 }
185 }
186 
187 #endif
void requireHttpMethod(const HttpRequest::Method &method)
Specifies an HTTP method allowed for the request.
Definition: request.cc:53
bool isPersistent() const
Checks if the client has requested persistent connection.
Definition: request.cc:209
Represents HTTP Host header.
Definition: http_header.h:68
Generic exception thrown by HttpRequest class.
Definition: request.h:21
Method method_
HTTP method of the request.
Definition: request.h:177
Generic exception thrown by HttpMessage class.
Definition: http_message.h:22
HTTP protocol version.
Definition: http_types.h:14
virtual std::string toString() const
Returns HTTP message as string.
Definition: request.cc:173
HttpRequestContextPtr context_
Pointer to the HttpRequestContext holding parsed data.
Definition: request.h:181
Method methodFromString(std::string method) const
Converts HTTP method specified in textual format to Method.
Definition: request.cc:231
std::string methodToString(const HttpRequest::Method &method) const
Converts HTTP method to string.
Definition: request.cc:253
std::string getBody() const
Returns HTTP message body as string.
Definition: request.cc:157
Base class for HttpRequest and HttpResponse.
Definition: http_message.h:62
boost::shared_ptr< HttpRequestContext > HttpRequestContextPtr
Pointer to the HttpRequestContext.
std::string getUri() const
Returns HTTP request URI.
Definition: request.cc:151
HttpRequest()
Constructor for inbound HTTP request.
Definition: request.cc:24
std::string toBriefString() const
Returns HTTP method, URI and HTTP version as a string.
Definition: request.cc:163
Base class for classes which need to be associated with a CalloutHandle object.
int version()
returns Kea hooks version.
Method
HTTP methods.
Definition: request.h:53
virtual const char * what() const
Returns a C-style character string of the cause of the exception.
Defines the logger used by the top-level component of kea-dhcp-ddns.
const HttpRequestContextPtr & context() const
Returns pointer to the HttpRequestContext.
Definition: request.h:90
virtual void create()
Commits information held in the context into the request.
Definition: request.cc:58
boost::shared_ptr< BasicHttpAuth > BasicHttpAuthPtr
Type of pointers to basic HTTP authentication objects.
Definition: basic_auth.h:70
virtual void finalize()
Completes creation of the HTTP request.
Definition: request.cc:126
Represents HTTP request message.
Definition: request.h:49
boost::shared_ptr< HttpRequest > HttpRequestPtr
Pointer to the HttpRequest object.
Definition: request.h:27
std::set< Method > required_methods_
Set of required HTTP methods.
Definition: request.h:174
Method getMethod() const
Returns HTTP method of the request.
Definition: request.cc:145
HttpRequestError(const char *file, size_t line, const char *what)
Definition: request.h:23
virtual void reset()
Reset the state of the object.
Definition: request.cc:137