TrackReference.cpp 846 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #include "TrackReference.h"
  2. #include "Logger.h"
  3. TrackReference::TrackReference(TrackRef *ref)
  4. {
  5. if (ref->gid != nullptr)
  6. {
  7. gid = pbArrayToVector(ref->gid);
  8. }
  9. else if (ref->uri != nullptr)
  10. {
  11. auto uri = std::string(ref->uri);
  12. auto idString = uri.substr(uri.find_last_of(":") + 1, uri.size());
  13. CSPOT_LOG(debug, "idString = %s", idString.c_str());
  14. gid = base62Decode(idString);
  15. isEpisode = true;
  16. }
  17. }
  18. TrackReference::~TrackReference()
  19. {
  20. pb_release(TrackRef_fields, ref);
  21. }
  22. std::vector<uint8_t> TrackReference::base62Decode(std::string uri)
  23. {
  24. std::vector<uint8_t> n = std::vector<uint8_t>({0});
  25. for (int x = 0; x < uri.size(); x++)
  26. {
  27. size_t d = alphabet.find(uri[x]);
  28. n = bigNumMultiply(n, 62);
  29. n = bigNumAdd(n, d);
  30. }
  31. return n;
  32. }