birdbadge/src/response/response.h

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;
};