#ifndef CCWeb_Request_H #define CCWeb_Request_H #pragma once #include "CCString.h" #include "map" #include #include "CORS.h" #include "../../include/CCJSONObject.h" #include "../../include/CCFile.h" #include "../../include/CCSocket.h" enum RequestProcess { RequestProcess_First, RequestProcess_Header, RequestProcess_Body, }; struct BufferReader { CCString Body; CCString Method; CCString Path; CCString Version; }; struct BufferFile { BufferFile() = default; std::vector Buffer; std::map Headers; CCString GetFileName(); bool Save(const CCString& Path); }; enum MethodType { MethodType_GET, MethodType_POST, MethodType_PUT, MethodType_DELETE, MethodType_HEAD, MethodType_OPTIONS, }; class OutPutStream { private: CCString RMethod = "GET"; CCString RPath,RBody; std::map SendHeaders = {{"Method",RMethod}}; CCSocket Socket; public: OutPutStream(CCSocket& sc); void SetMethod(MethodType method); void AddHeader(const CCString& Key,const CCString& Value); void SetHost(const CCString& host); void SetBufferBody(CCString body); void Send(); }; class CCRequest { private: BufferReader Buffer; public: std::map Headers; public: CCRequest() = default; CCRequest(CCSocket& sc); CCString GetFileSuffix(const CCString& filePath); CCString GetFileType(const CCString& str); unsigned int GetFileSize(const char* path); void SetBuffer(BufferReader& buffer); BufferReader GetReader(); JSON GetJson(const BufferReader& instr); BufferFile GetFile(BufferReader in); CCString GetParameter(CCString string); OutPutStream GetWiter(); private: std::map parseKeyValuePairs(const std::string& input); void GetFormData(CCString& input,CCString& key,CCString& value); CCString GetFileDateHeader(BufferReader in,std::map& map); std::vector ReaderFormData(BufferReader in, std::map &map); CCSocket Socket; }; #endif