Kea  1.5.0
post_request_json.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_POST_REQUEST_JSON_H
8 #define HTTP_POST_REQUEST_JSON_H
9 
10 #include <cc/data.h>
11 #include <exceptions/exceptions.h>
12 #include <http/post_request.h>
13 #include <boost/shared_ptr.hpp>
14 #include <string>
15 
16 namespace isc {
17 namespace http {
18 
21 public:
22  HttpRequestJsonError(const char* file, size_t line, const char* what) :
23  HttpRequestError(file, line, what) { };
24 };
25 
26 class PostHttpRequestJson;
27 
29 typedef boost::shared_ptr<PostHttpRequestJson> PostHttpRequestJsonPtr;
31 typedef boost::shared_ptr<const PostHttpRequestJson> ConstPostHttpRequestJsonPtr;
32 
40 public:
41 
43  explicit PostHttpRequestJson();
44 
53  explicit PostHttpRequestJson(const Method& method, const std::string& uri,
54  const HttpVersion& version);
55 
60  virtual void finalize();
61 
63  virtual void reset();
64 
70 
79  void setBodyAsJson(const data::ConstElementPtr& body);
80 
90  data::ConstElementPtr getJsonElement(const std::string& element_name) const;
91 
92 protected:
93 
96  void parseBodyAsJson();
97 
100 
101 };
102 
103 } // namespace http
104 } // namespace isc
105 
106 #endif
version
int version()
returns Kea hooks version.
Definition: high_availability/version.cc:13
isc::http::HttpRequestJsonError
Exception thrown when body of the HTTP message is not JSON.
Definition: post_request_json.h:20
post_request.h
isc::http::PostHttpRequestJson::json_
data::ConstElementPtr json_
Pointer to the parsed JSON body.
Definition: post_request_json.h:99
isc::http::PostHttpRequest
Represents HTTP POST request.
Definition: post_request.h:29
isc::http::PostHttpRequestJson
Represents HTTP POST request with JSON body.
Definition: post_request_json.h:39
isc::http::PostHttpRequestJson::setBodyAsJson
void setBodyAsJson(const data::ConstElementPtr &body)
Sets JSON body for an outbound message.
Definition: post_request_json.cc:53
isc::http::HttpRequestJsonError::HttpRequestJsonError
HttpRequestJsonError(const char *file, size_t line, const char *what)
Definition: post_request_json.h:22
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::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::PostHttpRequestJson::parseBodyAsJson
void parseBodyAsJson()
Interprets body as JSON, which can be later retrieved using data element objects.
Definition: post_request_json.cc:83
isc::http::PostHttpRequestJson::getJsonElement
data::ConstElementPtr getJsonElement(const std::string &element_name) const
Retrieves a single JSON element.
Definition: post_request_json.cc:64
data.h
exceptions.h
isc::http::PostHttpRequestJsonPtr
boost::shared_ptr< PostHttpRequestJson > PostHttpRequestJsonPtr
Pointer to PostHttpRequestJson.
Definition: post_request_json.h:26
isc::http::PostHttpRequestJson::finalize
virtual void finalize()
Complete parsing of the HTTP request.
Definition: post_request_json.cc:30
isc::http::PostHttpRequestJson::getBodyAsJson
data::ConstElementPtr getBodyAsJson() const
Retrieves JSON body.
Definition: post_request_json.cc:47
isc::data::ConstElementPtr
boost::shared_ptr< const Element > ConstElementPtr
Definition: data.h:23
isc::http::PostHttpRequestJson::PostHttpRequestJson
PostHttpRequestJson()
Constructor for inbound HTTP request.
Definition: post_request_json.cc:16
isc::http::HttpRequest::Method
Method
HTTP methods.
Definition: request.h:52
isc::http::PostHttpRequestJson::reset
virtual void reset()
Reset the state of the object.
Definition: post_request_json.cc:41
isc::http::ConstPostHttpRequestJsonPtr
boost::shared_ptr< const PostHttpRequestJson > ConstPostHttpRequestJsonPtr
Pointer to const PostHttpRequestJson.
Definition: post_request_json.h:31