mirror of
https://github.com/KingDuckZ/kamokan.git
synced 2024-11-23 00:33:44 +00:00
Add default_pastie_lang() method and language_selected mustache.
This commit is contained in:
parent
00e27a774a
commit
9deaa8a0b8
6 changed files with 34 additions and 6 deletions
|
@ -65,8 +65,11 @@ namespace kamokan {
|
||||||
assert(not token_invalid());
|
assert(not token_invalid());
|
||||||
assert(not pastie_not_found());
|
assert(not pastie_not_found());
|
||||||
|
|
||||||
|
auto pastie_lang = (m_pastie_info.lang ? boost::string_view(*m_pastie_info.lang) : boost::string_view());
|
||||||
parContext["self_destructed"] = m_pastie_info.self_destructed;
|
parContext["self_destructed"] = m_pastie_info.self_destructed;
|
||||||
parContext["pastie_token"] = get_search_token(cgi_env());
|
parContext["pastie_token"] = get_search_token(cgi_env());
|
||||||
|
parContext["pastie_lang"] = pastie_lang;
|
||||||
|
parContext["colourless"] = pastie_lang.empty() or pastie_lang == "colourless";
|
||||||
|
|
||||||
this->on_general_mustache_prepare(std::move(*m_pastie_info.pastie), parContext);
|
this->on_general_mustache_prepare(std::move(*m_pastie_info.pastie), parContext);
|
||||||
}
|
}
|
||||||
|
@ -79,4 +82,11 @@ namespace kamokan {
|
||||||
bool GeneralPastieResponse::pastie_not_found() const {
|
bool GeneralPastieResponse::pastie_not_found() const {
|
||||||
return not m_pastie_info.pastie;
|
return not m_pastie_info.pastie;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string GeneralPastieResponse::default_pastie_lang() {
|
||||||
|
if (m_pastie_info.lang)
|
||||||
|
return *m_pastie_info.lang;
|
||||||
|
else
|
||||||
|
return std::string();
|
||||||
|
}
|
||||||
} //namespace kamokan
|
} //namespace kamokan
|
||||||
|
|
|
@ -38,6 +38,7 @@ namespace kamokan {
|
||||||
virtual void on_mustache_prepare (mstch::map& parContext) override final;
|
virtual void on_mustache_prepare (mstch::map& parContext) override final;
|
||||||
virtual tawashi::HttpHeader on_general_pastie_process() = 0;
|
virtual tawashi::HttpHeader on_general_pastie_process() = 0;
|
||||||
virtual void on_general_mustache_prepare (std::string&& parPastie, mstch::map& parContext) = 0;
|
virtual void on_general_mustache_prepare (std::string&& parPastie, mstch::map& parContext) = 0;
|
||||||
|
std::string default_pastie_lang();
|
||||||
|
|
||||||
Storage::RetrievedPastie m_pastie_info;
|
Storage::RetrievedPastie m_pastie_info;
|
||||||
};
|
};
|
||||||
|
|
|
@ -77,11 +77,15 @@ namespace kamokan {
|
||||||
return boost::make_optional(buffer.str());
|
return boost::make_optional(buffer.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
mstch::array make_mstch_langmap (const SettingsBag& parSettings) {
|
mstch::array make_mstch_langmap (const SettingsBag& parSettings, const std::string& parSelected) {
|
||||||
mstch::array retval;
|
mstch::array retval;
|
||||||
|
|
||||||
for (auto&& lang : list_highlight_langs(parSettings)) {
|
for (auto&& lang : list_highlight_langs(parSettings)) {
|
||||||
retval.push_back(mstch::map{{"language_name", std::move(lang)}});
|
const bool selected = (parSelected == lang);
|
||||||
|
retval.push_back(mstch::map{
|
||||||
|
{"language_name", std::move(lang)},
|
||||||
|
{"language_selected", selected}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
@ -173,13 +177,13 @@ namespace kamokan {
|
||||||
|
|
||||||
statuslog->info("Sending response");
|
statuslog->info("Sending response");
|
||||||
SPDLOG_TRACE(statuslog, "Preparing mustache dictionary");
|
SPDLOG_TRACE(statuslog, "Preparing mustache dictionary");
|
||||||
|
const bool is_submit_page = this->is_submit_page();
|
||||||
mstch::map mustache_context {
|
mstch::map mustache_context {
|
||||||
{"submit_page", this->is_submit_page()},
|
{"submit_page", is_submit_page},
|
||||||
{"version", boost::string_view{STRINGIZE(VERSION_MAJOR) "." STRINGIZE(VERSION_MINOR) "." STRINGIZE(VERSION_PATCH)}},
|
{"version", boost::string_view{STRINGIZE(VERSION_MAJOR) "." STRINGIZE(VERSION_MINOR) "." STRINGIZE(VERSION_PATCH)}},
|
||||||
{"tawashi_version", tawashi::version()},
|
{"tawashi_version", tawashi::version()},
|
||||||
{"base_uri", base_uri()},
|
{"base_uri", base_uri()},
|
||||||
{"host_path", make_host_path(this->settings())},
|
{"host_path", make_host_path(this->settings())}
|
||||||
{"languages", make_mstch_langmap(*m_settings)}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
m_storage.finalize_connection();
|
m_storage.finalize_connection();
|
||||||
|
@ -188,6 +192,11 @@ namespace kamokan {
|
||||||
tawashi::HttpHeader http_header = this->on_process();
|
tawashi::HttpHeader http_header = this->on_process();
|
||||||
*m_stream_out << http_header;
|
*m_stream_out << http_header;
|
||||||
|
|
||||||
|
if (is_submit_page) {
|
||||||
|
SPDLOG_TRACE(statuslog, "Adding language list to mustache context");
|
||||||
|
mustache_context["languages"] = make_mstch_langmap(*m_settings, this->default_pastie_lang());
|
||||||
|
}
|
||||||
|
|
||||||
if (http_header.body_required()) {
|
if (http_header.body_required()) {
|
||||||
using std::chrono::steady_clock;
|
using std::chrono::steady_clock;
|
||||||
using std::chrono::milliseconds;
|
using std::chrono::milliseconds;
|
||||||
|
@ -275,4 +284,8 @@ namespace kamokan {
|
||||||
assert(parTime <= m_time0);
|
assert(parTime <= m_time0);
|
||||||
m_time0 = parTime;
|
m_time0 = parTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string Response::default_pastie_lang() {
|
||||||
|
return std::string();
|
||||||
|
}
|
||||||
} //namespace kamokan
|
} //namespace kamokan
|
||||||
|
|
|
@ -69,6 +69,7 @@ namespace kamokan {
|
||||||
virtual tawashi::HttpHeader on_process();
|
virtual tawashi::HttpHeader on_process();
|
||||||
virtual void on_mustache_prepare (mstch::map& parContext);
|
virtual void on_mustache_prepare (mstch::map& parContext);
|
||||||
virtual std::string on_mustache_retrieve();
|
virtual std::string on_mustache_retrieve();
|
||||||
|
virtual std::string default_pastie_lang();
|
||||||
virtual bool is_submit_page() { return false; }
|
virtual bool is_submit_page() { return false; }
|
||||||
|
|
||||||
Storage m_storage;
|
Storage m_storage;
|
||||||
|
|
|
@ -82,6 +82,7 @@ namespace kamokan {
|
||||||
|
|
||||||
Storage::RetrievedPastie::RetrievedPastie() :
|
Storage::RetrievedPastie::RetrievedPastie() :
|
||||||
pastie(),
|
pastie(),
|
||||||
|
lang(),
|
||||||
self_destructed(false),
|
self_destructed(false),
|
||||||
valid_token(false)
|
valid_token(false)
|
||||||
{
|
{
|
||||||
|
@ -175,9 +176,10 @@ namespace kamokan {
|
||||||
if (not retval.valid_token)
|
if (not retval.valid_token)
|
||||||
return retval;
|
return retval;
|
||||||
|
|
||||||
opt_string_list pastie_reply = m_redis->hmget(parToken, "pastie", "selfdes");
|
opt_string_list pastie_reply = m_redis->hmget(parToken, "pastie", "selfdes", "lang");
|
||||||
retval.pastie = (pastie_reply and not pastie_reply->empty() ? (*pastie_reply)[0] : opt_string());
|
retval.pastie = (pastie_reply and not pastie_reply->empty() ? (*pastie_reply)[0] : opt_string());
|
||||||
opt_string selfdes = (pastie_reply and pastie_reply->size() > 1 ? (*pastie_reply)[1] : opt_string());
|
opt_string selfdes = (pastie_reply and pastie_reply->size() > 1 ? (*pastie_reply)[1] : opt_string());
|
||||||
|
retval.lang = (pastie_reply and pastie_reply->size() > 2 ? (*pastie_reply)[2] : opt_string());
|
||||||
|
|
||||||
if (selfdes and string_conv<bool>(*selfdes)) {
|
if (selfdes and string_conv<bool>(*selfdes)) {
|
||||||
const bool deleted = m_redis->del(parToken);
|
const bool deleted = m_redis->del(parToken);
|
||||||
|
|
|
@ -45,6 +45,7 @@ namespace kamokan {
|
||||||
~RetrievedPastie() = default;
|
~RetrievedPastie() = default;
|
||||||
|
|
||||||
boost::optional<std::string> pastie;
|
boost::optional<std::string> pastie;
|
||||||
|
boost::optional<std::string> lang;
|
||||||
bool self_destructed;
|
bool self_destructed;
|
||||||
bool valid_token;
|
bool valid_token;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue