#pragma once #include "JDefines.h" #include "JTerminal.h" #include "ParsingHttp.h" #include "HttpHeader.h" namespace Incart::Net::WebApi { class MakeResponse { protected: ParsingHttp m_http; static QMap& getMapExt() { // распознаваемые типы файлов static QMap m_ext = { {"html","text/html; charset=utf8;"}, //{"json","text/json; charset=utf8;"}, {"json","application/json"}, {"js" ,"text/javascript; charset=utf8;"}, {"css" ,"text/css; charset=utf8;"}, {"txt" ,"text/plain; charset=utf8;"}, {"bin" ,"application/octet-stream;"}, }; return m_ext; } public: MakeResponse() {} void ret200() { clear(); m_http("200 OK"); m_http.addHeader("Access-Control-Allow-Origin", "*"); m_http.addHeader("Access-Control-Allow-Headers", "Content-Type"); m_http.assemble(); } void ret200(QString ext, QByteArray& data) { clear(); m_http("200 OK"); m_http.addHeader("Access-Control-Allow-Origin", "*"); m_http.addHeader("Access-Control-Allow-Headers", "Content-Type"); m_http.addHeader("Content-Type", getExt(ext)); m_http.addBody(data); m_http.assemble(); } void ret200Options() { clear(); m_http("200 OK"); m_http.addHeader("Access-Control-Allow-Origin", "*"); m_http.addHeader("Access-Control-Allow-Headers", "Content-Type"); m_http.addHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS"); m_http.addHeader("Access-Control-Max-Age", "86400"); m_http.assemble(); } void ret204() // нет содержимого { clear(); m_http("204 Error; No Content"); m_http.addHeader("Access-Control-Allow-Origin", "*"); m_http.addHeader("Access-Control-Allow-Headers", "Content-Type"); m_http.assemble(); } void ret401() // не авторизован (не представился) { clear(); m_http("401 Error; Unauthorized"); m_http.addHeader("Access-Control-Allow-Origin", "*"); m_http.addHeader("Access-Control-Allow-Headers", "Content-Type"); m_http.assemble(); } void ret404(QString fname) { clear(); m_http("404 Error; not found : " + fname); m_http.addHeader("Access-Control-Allow-Origin", "*"); m_http.addHeader("Access-Control-Allow-Headers", "Content-Type"); m_http.assemble(); } void ret500() { clear(); m_http("500 Error; Internal Server Error"); m_http.addHeader("Access-Control-Allow-Origin", "*"); m_http.addHeader("Access-Control-Allow-Headers", "Content-Type"); m_http.assemble(); } void ret501() { clear(); m_http("501 Error; Not Implemented"); m_http.addHeader("Access-Control-Allow-Origin", "*"); m_http.addHeader("Access-Control-Allow-Headers", "Content-Type"); m_http.assemble(); } void retSse() { clear(); m_http("200 OK"); m_http.addHeader("Cache-Control", "no-cache"); m_http.addHeader("Content-Type", "text/event-stream"); m_http.addHeader("Access-Control-Allow-Origin", "*"); m_http.addHeader("Access-Control-Allow-Headers", "Content-Type"); m_http.assemble(); } void retError(const QString& _error) { clear(); m_http(_error); m_http.addHeader("Access-Control-Allow-Origin", "*"); m_http.addHeader("Access-Control-Allow-Headers", "Content-Type"); m_http.assemble(); } void retError(const QString& _error, QByteArray& data) { clear(); m_http(_error); m_http.addHeader("Access-Control-Allow-Origin", "*"); m_http.addHeader("Access-Control-Allow-Headers", "Content-Type"); m_http.addHeader("Content-Type", getExt("json")); m_http.addBody(data); m_http.assemble(); } ParsingHttp& getHttp() { return m_http; } QByteArray& getResponse() { return m_http.getHttp(); } // void setFlash() { m_flash = true; } // bool getFlash() { bool ret = m_flash; m_flash = false; return ret; } protected: void clear() { } // дописать распознавание по имени файла!!! QString getExt(QString ext) { QMap& map = getMapExt(); if( ! map.contains(ext) ) return map["txt"]; return map[ext]; } }; } // namespace Incart::Net::WebApi