youtube-api-wrappers.hpp 2.5 KB

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