youtube-api-wrappers.hpp 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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. bool GetBroadcastsList(json11::Json &json_out, const QString &page,
  51. const QString &status);
  52. bool
  53. GetVideoCategoriesList(QVector<CategoryDescription> &category_list_out);
  54. bool SetVideoCategory(const QString &video_id,
  55. const QString &video_title,
  56. const QString &video_description,
  57. const QString &categorie_id);
  58. bool SetVideoThumbnail(const QString &video_id,
  59. const QString &thumbnail_file);
  60. bool StartBroadcast(const QString &broadcast_id);
  61. bool StopBroadcast(const QString &broadcast_id);
  62. bool ResetBroadcast(const QString &broadcast_id);
  63. bool StartLatestBroadcast();
  64. bool StopLatestBroadcast();
  65. void SetBroadcastId(QString &broadcast_id);
  66. QString GetBroadcastId();
  67. bool FindBroadcast(const QString &id, json11::Json &json_out);
  68. bool FindStream(const QString &id, json11::Json &json_out);
  69. QString GetLastError() { return lastErrorMessage; };
  70. bool GetTranslatedError(QString &error_message);
  71. private:
  72. QString broadcast_id;
  73. int lastError;
  74. QString lastErrorMessage;
  75. QString lastErrorReason;
  76. };