42 lines
886 B
C++
42 lines
886 B
C++
#pragma once
|
|
|
|
#include <string_view>
|
|
#include <string>
|
|
#include <vector>
|
|
#include <iostream>
|
|
|
|
class Response {
|
|
public:
|
|
enum Type {
|
|
image,
|
|
root,
|
|
error
|
|
};
|
|
|
|
virtual ~Response();
|
|
virtual void writeHeader(std::ostream& out) const = 0;
|
|
virtual void writeBody(std::ostream& out) const = 0;
|
|
|
|
static Response* create(const std::string_view& path);
|
|
|
|
protected:
|
|
Response(Type type);
|
|
|
|
static std::vector<std::string_view> splitPath(std::string_view path);
|
|
|
|
public:
|
|
const Type type;
|
|
|
|
static const char* status200Header;
|
|
static const char* status404Header;
|
|
static const char* status405Header;
|
|
static const char* status500Header;
|
|
|
|
static const char* pathDelimiter;
|
|
static const char* newLine;
|
|
static const char* headerTerminator;
|
|
|
|
static const char* contentTypeHTML;
|
|
static const char* contentTypeSVG;
|
|
};
|