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>
12#include <boost/shared_ptr.hpp>
13#include <cstdint>
14
15namespace isc {
16namespace http {
17
20public:
21 HttpRequestError(const char* file, size_t line, const char* what) :
22 HttpMessageError(file, line, what) { };
23};
24
25class HttpRequest;
26
28typedef boost::shared_ptr<HttpRequest> HttpRequestPtr;
29
31typedef boost::shared_ptr<const HttpRequest> ConstHttpRequestPtr;
32
48class HttpRequest : public HttpMessage {
49public:
50
52 enum class Method {
61 };
62
65
71 HttpRequest(const Method& method, const std::string& uri, const HttpVersion& version);
72
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
143protected:
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
virtual const char * what() const
Returns a C-style character string of the cause of the exception.
Generic exception thrown by HttpMessage class.
Definition: http_message.h:22
Base class for HttpRequest and HttpResponse.
Definition: http_message.h:62
Generic exception thrown by HttpRequest class.
Definition: request.h:19
HttpRequestError(const char *file, size_t line, const char *what)
Definition: request.h:21
Represents HTTP request message.
Definition: request.h:48
Method methodFromString(std::string method) const
Converts HTTP method specified in textual format to Method.
Definition: request.cc:205
Method
HTTP methods.
Definition: request.h:52
HttpRequestContextPtr context_
Pointer to the HttpRequestContext holding parsed data.
Definition: request.h:171
std::string toBriefString() const
Returns HTTP method, URI and HTTP version as a string.
Definition: request.cc:152
virtual void finalize()
Completes creation of the HTTP request.
Definition: request.cc:115
Method getMethod() const
Returns HTTP method of the request.
Definition: request.cc:134
virtual void create()
Commits information held in the context into the request.
Definition: request.cc:47
std::string getBody() const
Returns HTTP message body as string.
Definition: request.cc:146
bool isPersistent() const
Checks if the client has requested persistent connection.
Definition: request.cc:183
void requireHttpMethod(const HttpRequest::Method &method)
Specifies an HTTP method allowed for the request.
Definition: request.cc:42
HttpRequest()
Constructor for inbound HTTP request.
Definition: request.cc:24
std::string getUri() const
Returns HTTP request URI.
Definition: request.cc:140
std::set< Method > required_methods_
Set of required HTTP methods.
Definition: request.h:164
const HttpRequestContextPtr & context() const
Returns pointer to the HttpRequestContext.
Definition: request.h:80
std::string methodToString(const HttpRequest::Method &method) const
Converts HTTP method to string.
Definition: request.cc:227
Method method_
HTTP method of the request.
Definition: request.h:167
virtual void reset()
Reset the state of the object.
Definition: request.cc:126
virtual std::string toString() const
Returns HTTP message as string.
Definition: request.cc:162
int version()
returns Kea hooks version.
boost::shared_ptr< const HttpRequest > ConstHttpRequestPtr
Pointer to the const HttpRequest object.
Definition: request.h:31
boost::shared_ptr< HttpRequestContext > HttpRequestContextPtr
Pointer to the HttpRequestContext.
boost::shared_ptr< HttpRequest > HttpRequestPtr
Pointer to the HttpRequest object.
Definition: request.h:28
Defines the logger used by the top-level component of kea-dhcp-ddns.
HTTP protocol version.
Definition: http_types.h:14