OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
http_request.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef __HTTP_REQUEST_H__
6 #define __HTTP_REQUEST_H__
7 
8 #include <map>
9 #include <string>
10 
11 #include "io/tcp_session.h"
12 #include "http_parser/http_parser.h"
13 
14 class HttpRequest {
15 public:
16  typedef std::map<std::string, std::string> HeaderMap;
17 
18  HttpRequest();
19 
20  void SetMethod(http_method method) { method_ = method; }
21  http_method GetMethod() const { return method_; }
22  // clobbers argument
23  void SetUrl(std::string *url) {
24  url_.swap(*url);
25  }
26  void PushHeader(const std::string &key, const std::string &value) {
27  headers_.insert(make_pair(key, value));
28  }
29  void SetBody(const char *data, size_t length) {
30  body_.append(data, length);
31  }
32  void SetEvent(enum TcpSession::Event event) { event_ = event; }
33 
34  std::string ToString() const;
35 
36  std::string UrlPath() const;
37  std::string UrlQuery() const;
38  const HeaderMap & Headers() const { return headers_; }
39  const std::string & Body() const { return body_; }
40  TcpSession::Event Event() const { return event_; }
41 private:
42  http_method method_;
43  std::string url_;
45  std::string body_;
46  TcpSession::Event event_; // used when the request indicates an event
47 };
48 
49 #endif
HeaderMap headers_
Definition: http_request.h:44
const std::string & Body() const
Definition: http_request.h:39
const HeaderMap & Headers() const
Definition: http_request.h:38
std::string body_
Definition: http_request.h:45
http_method method_
Definition: http_request.h:42
void SetEvent(enum TcpSession::Event event)
Definition: http_request.h:32
void PushHeader(const std::string &key, const std::string &value)
Definition: http_request.h:26
std::map< std::string, std::string > HeaderMap
Definition: http_request.h:16
TcpSession::Event event_
Definition: http_request.h:46
std::string url_
Definition: http_request.h:43
http_method GetMethod() const
Definition: http_request.h:21
void SetMethod(http_method method)
Definition: http_request.h:20
std::string ToString() const
Definition: http_request.cc:15
std::string UrlQuery() const
Definition: http_request.cc:36
void SetBody(const char *data, size_t length)
Definition: http_request.h:29
TcpSession::Event Event() const
Definition: http_request.h:40
std::string UrlPath() const
Definition: http_request.cc:25
void SetUrl(std::string *url)
Definition: http_request.h:23