youtube-api-wrappers.hpp 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #pragma once
  2. #include "auth-youtube.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,
  38. std::string request_type, const char *data,
  39. json11::Json &ret, long *error_code = nullptr,
  40. int data_size = 0);
  41. bool UpdateAccessToken();
  42. bool InsertCommand(const char *url, const char *content_type,
  43. std::string request_type, const char *data,
  44. json11::Json &ret, int data_size = 0);
  45. public:
  46. YoutubeApiWrappers(const Def &d);
  47. bool GetChannelDescription(ChannelDescription &channel_description);
  48. bool InsertBroadcast(BroadcastDescription &broadcast);
  49. bool InsertStream(StreamDescription &stream);
  50. bool BindStream(const QString broadcast_id, const QString stream_id,
  51. json11::Json &json_out);
  52. bool GetBroadcastsList(json11::Json &json_out, const QString &page,
  53. const QString &status);
  54. bool
  55. GetVideoCategoriesList(QVector<CategoryDescription> &category_list_out);
  56. bool SetVideoCategory(const QString &video_id,
  57. const QString &video_title,
  58. const QString &video_description,
  59. const QString &categorie_id);
  60. bool SetVideoThumbnail(const QString &video_id,
  61. const QString &thumbnail_file);
  62. bool StartBroadcast(const QString &broadcast_id);
  63. bool StopBroadcast(const QString &broadcast_id);
  64. bool ResetBroadcast(const QString &broadcast_id,
  65. json11::Json &json_out);
  66. bool StartLatestBroadcast();
  67. bool StopLatestBroadcast();
  68. bool SendChatMessage(const std::string &chat_id,
  69. const QString &message);
  70. void SetBroadcastId(QString &broadcast_id);
  71. QString GetBroadcastId();
  72. bool FindBroadcast(const QString &id, json11::Json &json_out);
  73. bool FindStream(const QString &id, json11::Json &json_out);
  74. QString GetLastError() { return lastErrorMessage; };
  75. bool GetTranslatedError(QString &error_message);
  76. private:
  77. QString broadcast_id;
  78. int lastError;
  79. QString lastErrorMessage;
  80. QString lastErrorReason;
  81. };