TrackReference.cpp 889 B

1234567891011121314151617181920212223242526272829303132333435363738
  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. //pbFree(TrackRef_fields, &ref);
  22. }
  23. std::vector<uint8_t> TrackReference::base62Decode(std::string uri)
  24. {
  25. std::vector<uint8_t> n = std::vector<uint8_t>({0});
  26. for (int x = 0; x < uri.size(); x++)
  27. {
  28. size_t d = alphabet.find(uri[x]);
  29. n = bigNumMultiply(n, 62);
  30. n = bigNumAdd(n, d);
  31. }
  32. return n;
  33. }