You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
1.5 KiB
C++

#ifndef WEBCC_HTTP_REQUEST_H_
#define WEBCC_HTTP_REQUEST_H_
#include <memory>
#include <string>
#include "webcc/http_message.h"
namespace webcc {
class HttpRequest : public HttpMessage {
public:
HttpRequest() = default;
~HttpRequest() override = default;
const std::string& method() const { return method_; }
void set_method(const std::string& method) { method_ = method; }
const std::string& url() const { return url_; }
void set_url(const std::string& url) { url_ = url; }
const std::string& host() const { return host_; }
const std::string& port() const { return port_; }
std::string port(const std::string& default_port) const {
return port_.empty() ? default_port : port_;
}
// Set host name and port number.
// The |host| is a descriptive name (e.g., www.google.com) or a numeric IP
// address (127.0.0.1).
// The |port| is a numeric number (e.g., 9000). The default value (80 for HTTP
// or 443 for HTTPS) will be used to connect to server if it's empty.
void set_host(const std::string& host, const std::string& port = "") {
host_ = host;
port_ = port;
}
// Compose start line, set Host header, etc.
void Make() override;
private:
// HTTP method.
std::string method_;
// Request URL.
// A complete URL naming the requested resource, or the path component of
// the URL.
std::string url_;
std::string host_;
std::string port_;
};
typedef std::shared_ptr<HttpRequest> HttpRequestPtr;
} // namespace webcc
#endif // WEBCC_HTTP_REQUEST_H_