instagram_task.cpp 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #include <include/task/instagram_task.hpp>
  2. using namespace Scheduler;
  3. namespace TaskIndex {
  4. static const uint8_t HEADER = 0;
  5. static const uint8_t DESCRIPTION = 1;
  6. static const uint8_t DATETIME = 2;
  7. static const uint8_t PROMOTE_SHARE = 3;
  8. static const uint8_t LINK_IN_BIO = 4;
  9. static const uint8_t HASHTAGS = 5;
  10. static const uint8_t REQUESTED_BY = 6;
  11. static const uint8_t REQUESTED_BY_PHRASE = 7;
  12. static const uint8_t FILES = 8;
  13. static const uint8_t USER = 9;
  14. static const uint8_t IS_VIDEO = 10;
  15. } // namespace TaskIndex
  16. void InstagramTask::defineTaskArguments() {
  17. std::vector<std::unique_ptr<TaskArgumentBase>> args{};
  18. args.emplace_back(std::make_unique<TaskArgument<QString>>("header", Type::TEXT, QString{}));
  19. args.emplace_back(std::make_unique<TaskArgument<QString>>("description", Type::TEXT, QString{}));
  20. args.emplace_back(std::make_unique<TaskArgument<QString>>("datetime", Type::DATETIME, QString{}));
  21. args.emplace_back(std::make_unique<TaskArgument<QString>>("promote_share", Type::TEXT, QString{}));
  22. args.emplace_back(std::make_unique<TaskArgument<QString>>("link_in_bio", Type::TEXT, QString{}));
  23. args.emplace_back(
  24. std::make_unique<TaskArgument<std::vector<QString>>>("hashtags", Type::STRINGVECTOR, std::vector<QString>{}));
  25. args.emplace_back(
  26. std::make_unique<TaskArgument<std::vector<QString>>>("requested_by", Type::STRINGVECTOR, std::vector<QString>{}));
  27. args.emplace_back(std::make_unique<TaskArgument<QString>>("requested_by_phrase", Type::TEXT, QString{}));
  28. args.emplace_back(
  29. std::make_unique<TaskArgument<std::vector<KFileData>>>("files", Type::FILEVECTOR, std::vector<KFileData>{})),
  30. args.emplace_back(std::make_unique<TaskArgument<QString>>("user", Type::TEXT, QString{}));
  31. args.emplace_back(std::make_unique<TaskArgument<bool>>("is_video", Type::BOOLEAN, bool{}));
  32. m_arguments = args;
  33. }
  34. const TaskArguments InstagramTask::getTaskArguments() { return m_arguments; }
  35. void InstagramTask::setArgument(QString name, TypeVariant value) {
  36. TaskIterator it =
  37. std::find_if(m_arguments.begin(), m_arguments.end(), [name](auto argument) { return argument.text() == name; });
  38. if (it != m_arguments.end()) {
  39. if (isIndex(value.index(), VariantIndex::QSTRING)) {
  40. it->get()->setValue(value);
  41. } else if (isIndex(value.index(), VariantIndex::BOOLEAN)) {
  42. it->get()->setValue(QString::number(std::get<VariantIndex::BOOLEAN>(value)));
  43. } else if (isIndex(value.index(), VariantIndex::INTEGER)) {
  44. it->get()->setValue(QString::number(std::get<VariantIndex::INTEGER>(value)));
  45. } else {
  46. // Could not set argument value
  47. // TODO: Log here
  48. }
  49. }
  50. }
  51. TypeVariant InstagramTask::getTaskArgument(QString name) {
  52. TaskIterator it =
  53. std::find_if(m_arguments.begin(), m_arguments.end(), [name](auto argument) { return argument.text() == name; });
  54. if (it != m_arguments.end()) {
  55. return it->get()->getValue();
  56. }
  57. return ""; // Perhaps we should throw
  58. }
  59. ArgumentValues InstagramTask::getArgumentValues() {
  60. ArgumentValues values{static_cast<int>(m_arguments.size())};
  61. for (const auto& argument : m_arguments) {
  62. if (!argument->isContainer()) {
  63. values.push_back(argument->getStringValue());
  64. }
  65. }
  66. return values;
  67. }
  68. void InstagramTask::setDefaultValues() {
  69. m_arguments.at(TaskIndex::HEADER)->setValue("Learn to speak like native Korean speakers 🙆‍♀️🇰🇷");
  70. m_arguments.at(TaskIndex::PROMOTE_SHARE)
  71. ->setValue("Share the post through IG story if you enjoy the phrase 🙋‍♀️");
  72. m_arguments.at(TaskIndex::LINK_IN_BIO)
  73. ->setValue("Subscribe to my YouTube channel (link 🔗in bio) to learn more about Korean language and culture ❤");
  74. m_arguments.at(TaskIndex::REQUESTED_BY_PHRASE)->setValue("The phrase was requested by ");
  75. }
  76. void InstagramTask::clear() {
  77. for (const auto& argument : m_arguments) {
  78. argument->clear();
  79. }
  80. }
  81. InstagramTask::~InstagramTask() {}