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++
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_
|