diff --git a/spectrum/src/frontends/slack/SlackAPI.h b/spectrum/src/frontends/slack/SlackAPI.h index 7037938b21cf2d16257ab75f3bfb2a3d1e123df3..039247d810c37f9f2f846247cf9ddca6869fef75 100644 --- a/spectrum/src/frontends/slack/SlackAPI.h +++ b/spectrum/src/frontends/slack/SlackAPI.h @@ -22,7 +22,6 @@ #include "transport/HTTPRequestQueue.h" #include "transport/HTTPRequest.h" -#include "transport/StorageBackend.h" #include "rapidjson/document.h" #include @@ -36,11 +35,40 @@ namespace Transport { class Component; class StorageBackend; class HTTPRequest; -class SlackRTM; + +class SlackChannelInfo { + public: + SlackChannelInfo() {} + virtual ~SlackChannelInfo() {} + + std::string id; + std::string name; + std::vector members; +}; + +class SlackImInfo { + public: + SlackImInfo() {} + virtual ~SlackImInfo() {} + + std::string id; + std::string user; +}; + +class SlackUserInfo { + public: + SlackUserInfo() : isPrimaryOwner(false) {} + virtual ~SlackUserInfo() {} + + std::string id; + std::string name; + bool isPrimaryOwner; +}; + class SlackAPI : public HTTPRequestQueue { public: - SlackAPI(Component *component, UserInfo uinfo); + SlackAPI(Component *component, const std::string &token); virtual ~SlackAPI(); @@ -52,12 +80,16 @@ class SlackAPI : public HTTPRequestQueue { void sendMessage(const std::string &from, const std::string &to, const std::string &text); + static void getSlackChannelInfo(HTTPRequest *req, bool ok, rapidjson::Document &resp, const std::string &data, std::map &channels); + static void getSlackImInfo(HTTPRequest *req, bool ok, rapidjson::Document &resp, const std::string &data, std::map &ims); + static void getSlackUserInfo(HTTPRequest *req, bool ok, rapidjson::Document &resp, const std::string &data, std::map &users); + private: void handleSendMessage(HTTPRequest *req, bool ok, rapidjson::Document &resp, const std::string &data); private: Component *m_component; - UserInfo m_uinfo; + std::string m_token; }; }