YoutubeApiWrappers.hpp 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #pragma once
  2. #include <oauth/YoutubeAuth.hpp>
  3. #include <json11.hpp>
  4. #include <QString>
  5. struct ChannelDescription {
  6. QString id;
  7. QString title;
  8. };
  9. struct StreamDescription {
  10. QString id;
  11. QString name;
  12. QString title;
  13. };
  14. struct CategoryDescription {
  15. QString id;
  16. QString title;
  17. };
  18. struct BroadcastDescription {
  19. QString id;
  20. QString title;
  21. QString description;
  22. QString privacy;
  23. CategoryDescription category;
  24. QString latency;
  25. bool made_for_kids;
  26. bool auto_start;
  27. bool auto_stop;
  28. bool dvr;
  29. bool schedul_for_later;
  30. QString schedul_date_time;
  31. QString projection;
  32. };
  33. bool IsYouTubeService(const std::string &service);
  34. bool IsUserSignedIntoYT();
  35. class YoutubeApiWrappers : public YoutubeAuth {
  36. Q_OBJECT
  37. bool TryInsertCommand(const char *url, const char *content_type, std::string request_type, const char *data,
  38. json11::Json &ret, long *error_code = nullptr, int data_size = 0);
  39. bool UpdateAccessToken();
  40. bool InsertCommand(const char *url, const char *content_type, std::string request_type, const char *data,
  41. json11::Json &ret, int data_size = 0);
  42. public:
  43. YoutubeApiWrappers(const Def &d);
  44. bool GetChannelDescription(ChannelDescription &channel_description);
  45. bool InsertBroadcast(BroadcastDescription &broadcast);
  46. bool InsertStream(StreamDescription &stream);
  47. bool BindStream(const QString broadcast_id, const QString stream_id);
  48. bool GetBroadcastsList(json11::Json &json_out, const QString &page, const QString &status);
  49. bool GetVideoCategoriesList(QVector<CategoryDescription> &category_list_out);
  50. bool SetVideoCategory(const QString &video_id, const QString &video_title, const QString &video_description,
  51. const QString &categorie_id);
  52. bool SetVideoThumbnail(const QString &video_id, const QString &thumbnail_file);
  53. bool StartBroadcast(const QString &broadcast_id);
  54. bool StopBroadcast(const QString &broadcast_id);
  55. bool ResetBroadcast(const QString &broadcast_id, json11::Json &json_out);
  56. bool StartLatestBroadcast();
  57. bool StopLatestBroadcast();
  58. void SetBroadcastId(QString &broadcast_id);
  59. QString GetBroadcastId();
  60. bool FindBroadcast(const QString &id, json11::Json &json_out);
  61. bool FindStream(const QString &id, json11::Json &json_out);
  62. QString GetLastError() { return lastErrorMessage; };
  63. bool GetTranslatedError(QString &error_message);
  64. private:
  65. QString broadcast_id;
  66. int lastError;
  67. QString lastErrorMessage;
  68. QString lastErrorReason;
  69. };