base64.cpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #include "../include/base64.h"
  2. #include <boost/beast.hpp>
  3. template <> std::string base64::decode<std::string>(const std::string &val) {
  4. std::string ret;
  5. ret.resize(boost::beast::detail::base64::decoded_size(val.size()));
  6. std::size_t read = boost::beast::detail::base64::decode(&ret.front(), val.c_str(), val.size()).first;
  7. ret.resize(read);
  8. return ret;
  9. }
  10. template <> std::vector<char> base64::decode<std::vector<char>>(const std::string &val) {
  11. std::vector<char> ret;
  12. ret.resize(boost::beast::detail::base64::decoded_size(val.size()));
  13. std::size_t read = boost::beast::detail::base64::decode(ret.data(), val.c_str(), val.size()).first;
  14. ret.resize(read);
  15. return ret;
  16. }
  17. template <> std::string base64::encode<std::string>(const std::string &val) {
  18. std::string ret;
  19. ret.resize(boost::beast::detail::base64::encoded_size(val.size()));
  20. std::size_t read = boost::beast::detail::base64::encode(&ret.front(), val.data(), val.size());
  21. ret.resize(read);
  22. return ret;
  23. }
  24. template <> std::string base64::encode<std::vector<char>>(const std::vector<char> &val) {
  25. std::string ret;
  26. ret.resize(boost::beast::detail::base64::encoded_size(val.size()));
  27. std::size_t read = boost::beast::detail::base64::encode(&ret.front(), val.data(), val.size());
  28. ret.resize(read);
  29. return ret;
  30. }