//this file is generated by program(drogon_ctl) automatically,don't modify it!
#include "filter_cc.h"
#include <drogon/utils/OStringStream.h>
#include <drogon/utils/Utilities.h>
#include <string>
#include <map>
#include <vector>
#include <set>
#include <iostream>
#include <unordered_map>
#include <unordered_set>
#include <algorithm>
#include <list>
#include <deque>
#include <queue>
using namespace drogon;
std::string filter_cc::genText(const DrTemplateData& filter_cc_view_data)
{
	drogon::OStringStream filter_cc_tmp_stream;
	std::string layoutName{""};
	filter_cc_tmp_stream << "/**\n";
	filter_cc_tmp_stream << " *\n";
	filter_cc_tmp_stream << " *  ";
{
    auto & val=filter_cc_view_data["filename"];
    if(val.type()==typeid(const char *)){
        filter_cc_tmp_stream<<*(std::any_cast<const char *>(&val));
    }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){
        filter_cc_tmp_stream<<*(std::any_cast<const std::string>(&val));
    }
}
	filter_cc_tmp_stream << ".cc\n";
	filter_cc_tmp_stream << " *\n";
	filter_cc_tmp_stream << " */\n";
filter_cc_tmp_stream<<"\n";
	filter_cc_tmp_stream << "#include \"";
{
    auto & val=filter_cc_view_data["filename"];
    if(val.type()==typeid(const char *)){
        filter_cc_tmp_stream<<*(std::any_cast<const char *>(&val));
    }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){
        filter_cc_tmp_stream<<*(std::any_cast<const std::string>(&val));
    }
}
	filter_cc_tmp_stream << ".h\"\n";
filter_cc_tmp_stream<<"\n";
	filter_cc_tmp_stream << "using namespace drogon;\n";
auto namespaceStr=filter_cc_view_data.get<std::string>("namespaceString");
if(!namespaceStr.empty())
filter_cc_tmp_stream<<"using namespace "<<namespaceStr<<";\n";
filter_cc_tmp_stream<<"\n";
	filter_cc_tmp_stream << "void ";
{
    auto & val=filter_cc_view_data["className"];
    if(val.type()==typeid(const char *)){
        filter_cc_tmp_stream<<*(std::any_cast<const char *>(&val));
    }else if(val.type()==typeid(std::string)||val.type()==typeid(const std::string)){
        filter_cc_tmp_stream<<*(std::any_cast<const std::string>(&val));
    }
}
	filter_cc_tmp_stream << "::doFilter(const HttpRequestPtr &req,\n";
	filter_cc_tmp_stream << "                         FilterCallback &&fcb,\n";
	filter_cc_tmp_stream << "                         FilterChainCallback &&fccb)\n";
	filter_cc_tmp_stream << "{\n";
	filter_cc_tmp_stream << "    //Edit your logic here\n";
	filter_cc_tmp_stream << "    if (1)\n";
	filter_cc_tmp_stream << "    {\n";
	filter_cc_tmp_stream << "        //Passed\n";
	filter_cc_tmp_stream << "        fccb();\n";
	filter_cc_tmp_stream << "        return;\n";
	filter_cc_tmp_stream << "    }\n";
	filter_cc_tmp_stream << "    //Check failed\n";
	filter_cc_tmp_stream << "    auto res = drogon::HttpResponse::newHttpResponse();\n";
	filter_cc_tmp_stream << "    res->setStatusCode(k500InternalServerError);\n";
	filter_cc_tmp_stream << "    fcb(res);\n";
	filter_cc_tmp_stream << "}\n";
if(layoutName.empty())
{
std::string ret{std::move(filter_cc_tmp_stream.str())};
return ret;
}else
{
auto templ = DrTemplateBase::newTemplate(layoutName);
if(!templ) return "";
HttpViewData data = filter_cc_view_data;
auto str = std::move(filter_cc_tmp_stream.str());
if(!str.empty() && str[str.length()-1] == '\n') str.resize(str.length()-1);
data[""] = std::move(str);
return templ->genText(data);
}
}
