#include "coding/base64.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wreorder" #include #include #include #include #pragma GCC diagnostic pop namespace base64 { // From: http://stackoverflow.com/a/28471421 std::string Decode(const std::string & val) { using namespace boost::archive::iterators; using It = transform_width, 8, 6>; return boost::algorithm::trim_right_copy_if(std::string(It(std::begin(val)), It(std::end(val))), [](char c) { return c == '\0'; }); } std::string Encode(const std::string & val) { using namespace boost::archive::iterators; using It = base64_from_binary>; auto tmp = std::string(It(std::begin(val)), It(std::end(val))); return tmp.append((3 - val.size() % 3) % 3, '='); } } // namespace base64