instagram_task.hpp 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. #ifndef __INSTAGRAM_TASK_HPP__
  2. #define __INSTAGRAM_TASK_HPP__
  3. #include <include/task/task.hpp>
  4. #include <type_traits>
  5. namespace Scheduler {
  6. namespace Args {
  7. const QString HEADER_TYPE = "header";
  8. const QString FILE_TYPE = "files";
  9. const QString DESCRIPTION_TYPE = "description";
  10. const QString HASHTAG_TYPE = "hashtags";
  11. const QString PROMOTE_TYPE = "promote_share";
  12. const QString LINK_BIO_TYPE = "link_in_bio";
  13. const QString REQUESTED_BY_TYPE = "requested_by";
  14. const QString REQUESTED_BY_PHRASE = "requested_by_phrase";
  15. } // namespace Args
  16. } // namespace Scheduler
  17. /**
  18. * @brief The InstagramTask class
  19. *
  20. * Class to organize and transport data necessary to perform an Instagram Task.
  21. */
  22. class InstagramTask : public Scheduler::Task {
  23. public:
  24. /**
  25. * @constructor
  26. */
  27. InstagramTask();
  28. /**
  29. * Overrides @abstract Task::defineTaskArguments
  30. *
  31. * Useful for avoiding repetitive input of data.
  32. */
  33. virtual void defineTaskArguments() override;
  34. /**
  35. * Overrides @abstract Task::getTaskArguments
  36. *
  37. * Use this method to take over ownership of the task's arguments.
  38. */
  39. virtual const Scheduler::TaskArguments&& getTaskArguments() override;
  40. /**
  41. * Overrides @abstract Task::getTaskArgument
  42. *
  43. * Easy access to an argument.
  44. */
  45. virtual Scheduler::TaskArgument&& getTaskArgument(QString name) override;
  46. /**
  47. * Overrides @abstract Task::getTaskArgumentValue
  48. *
  49. * Easy access to an argument's value.
  50. */
  51. virtual const Scheduler::TypeVariant getTaskArgumentValue(QString name) override;
  52. /**
  53. * Overrides @abstract Task::getArgumentValues
  54. *
  55. * Easy access to all of the arguments that can be represented as a string.
  56. */
  57. virtual Scheduler::ArgumentValues getArgumentValues() override;
  58. /**
  59. * Overrides @abstract Task::getArgumentNames
  60. *
  61. * Provides the names of the arguments.
  62. */
  63. virtual QVector<QString> getArgumentNames() override;
  64. /**
  65. * Overrides @abstract Task::getFiles
  66. *
  67. * Easy access to the task's files.
  68. */
  69. virtual const QVector<Scheduler::KFileData> getFiles() override;
  70. /**
  71. * Overrides @abstract Task::getType
  72. *
  73. * Informs the caller of the task's type.
  74. */
  75. virtual Scheduler::TaskType getType() override;
  76. /**
  77. * Overrides @abstract Task::setArgument
  78. *
  79. * Set the value of an existing argument.
  80. */
  81. virtual void setArgument(QString name, Scheduler::TypeVariant arg) override;
  82. /**
  83. * Overrides @abstract Task::addArgument
  84. *
  85. * Add an additional value to a file container argument.
  86. */
  87. virtual void addArgument(QString name, Scheduler::KFileData file) override;
  88. /**
  89. * Overrides @abstract Task::addArgument
  90. *
  91. * Add an additional value to a string container argument.
  92. */
  93. virtual void addArgument(QString name, QString string) override;
  94. /**
  95. * Overrides @abstract Task::removeArgument
  96. *
  97. * Remove a value from a container argument.
  98. */
  99. virtual void removeArgument(QString name, Scheduler::TypeVariant arg) override;
  100. /**
  101. * Overrides @abstract Task::hasFiles
  102. *
  103. * Tells the caller if the task has files.
  104. */
  105. virtual bool hasFiles() override;
  106. /**
  107. * Overrides @abstract Task::isReady
  108. *
  109. * Informs the caller if the prerequisite arguments have values.
  110. */
  111. virtual bool isReady() override;
  112. /**
  113. * Overrides @abstract Task::clear
  114. *
  115. * Clears the values of all arguments, without removing the arguments.
  116. */
  117. virtual void clear() override;
  118. /**
  119. * Overrides @abstract Task::setDefaultValues
  120. *
  121. * Set default values for the arguments.
  122. */
  123. virtual void setDefaultValues() override;
  124. /**
  125. * Overrides @abstract Task::~Task
  126. * @destructor
  127. */
  128. virtual ~InstagramTask() override;
  129. private:
  130. /**
  131. * @brief m_arguments
  132. *
  133. * A container storing the task's arguments
  134. */
  135. Scheduler::TaskArguments m_arguments;
  136. };
  137. #endif // __INSTAGRAM_TASK_HPP