43 lines
1.2 KiB
C
43 lines
1.2 KiB
C
|
#pragma once
|
||
|
|
||
|
#include "Cookie.h"
|
||
|
#include "Http.h"
|
||
|
#include "Session.h"
|
||
|
#include "Types.h"
|
||
|
#include "ParameterValue.h"
|
||
|
|
||
|
namespace VWeb {
|
||
|
class Response {
|
||
|
public:
|
||
|
static Ref<Response> FromCode(HttpStatusCode code);
|
||
|
|
||
|
public:
|
||
|
size_t Length{0};
|
||
|
Ref<Cookies> CookieData{nullptr};
|
||
|
Ref<Session> SessionData{nullptr};
|
||
|
HttpStatusCode Status{HttpStatusCode::OK};
|
||
|
HttpMethod Method{HttpMethod::GET};
|
||
|
|
||
|
public:
|
||
|
std::string GetResponse();
|
||
|
void SetHeader(const std::string &key, ParameterValue &value);
|
||
|
void SetHeader(const std::string &key, const std::string &value);
|
||
|
void AddHeaders(const std::string &key, const std::vector<std::string> &values);
|
||
|
void AddHeader(const std::string &key, const std::string &value);
|
||
|
void SetType(const std::string &type);
|
||
|
void AddContent(const std::string &data);
|
||
|
void SetStatus(HttpStatusCode);
|
||
|
void SetMethod(HttpMethod);
|
||
|
void Reset();
|
||
|
Response &operator<<(const std::string &data) {
|
||
|
m_Content << data;
|
||
|
return *this;
|
||
|
}
|
||
|
|
||
|
protected:
|
||
|
std::string TransformHeaders(const std::string &content);
|
||
|
std::string m_Type{"text/html"};
|
||
|
std::stringstream m_Content;
|
||
|
std::unordered_map<std::string, ParameterValue> m_Headers;
|
||
|
};
|
||
|
} // namespace VWeb
|