Files
@ 7ba8909d719f
Branch filter:
Location: libtransport.git/spectrum/src/frontends/slack/SlackAPI.h - annotation
7ba8909d719f
4.2 KiB
text/plain
Use value_or instead of get_value_or
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 b55393bf9fb6 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 f6949a020ad3 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 05bf03704aec 52347fa379b0 fd9c9af71bfb fd9c9af71bfb 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 26a01b8efa0a 5adb3d1f9733 26a01b8efa0a 5adb3d1f9733 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e ab8a950661d4 3fb55b243e0e efd60bd374ad efd60bd374ad efd60bd374ad efd60bd374ad 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 efd60bd374ad efd60bd374ad efd60bd374ad efd60bd374ad 5adb3d1f9733 5adb3d1f9733 b55393bf9fb6 3fb55b243e0e f6949a020ad3 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 | /**
* Spectrum 2 Slack Frontend
*
* Copyright (C) 2015, Jan Kaluza <hanzz.k@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
#pragma once
#include "transport/HTTPRequestQueue.h"
#include "transport/HTTPRequest.h"
#include "rapidjson/document.h"
#include <string>
#include <algorithm>
#include <map>
#include <boost/signal.hpp>
namespace Transport {
class Component;
class StorageBackend;
class HTTPRequest;
class SlackIdManager;
class SlackChannelInfo {
public:
SlackChannelInfo() {}
virtual ~SlackChannelInfo() {}
std::string id;
std::string name;
std::vector<std::string> 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, SlackIdManager *idManager, const std::string &token, const std::string &domain);
virtual ~SlackAPI();
void usersList(HTTPRequest::Callback callback);
std::string getOwnerId(HTTPRequest *req, bool ok, rapidjson::Document &resp, const std::string &data);
void channelsCreate(const std::string &name, HTTPRequest::Callback callback);
void channelsInvite(const std::string &channel, const std::string &user, HTTPRequest::Callback callback);
void channelsList(HTTPRequest::Callback callback);
void imOpen(const std::string &uid, HTTPRequest::Callback callback);
std::string getChannelId(HTTPRequest *req, bool ok, rapidjson::Document &resp, const std::string &data);
void deleteMessage(const std::string &channel, const std::string &ts);
void sendMessage(const std::string &from, const std::string &to, const std::string &text);
void setPurpose(const std::string &channel, const std::string &purpose);
static void getSlackChannelInfo(HTTPRequest *req, bool ok, rapidjson::Document &resp, const std::string &data, std::map<std::string, SlackChannelInfo> &channels);
static void getSlackImInfo(HTTPRequest *req, bool ok, rapidjson::Document &resp, const std::string &data, std::map<std::string, SlackImInfo> &ims);
static void getSlackUserInfo(HTTPRequest *req, bool ok, rapidjson::Document &resp, const std::string &data, std::map<std::string, SlackUserInfo> &users);
static std::string SlackObjectToPlainText(const std::string &object, bool isChannel = false, bool returnName = false);
// Creates channel if it does not exist and invites the user to the channel.
typedef boost::function< void (const std::string &channelId) > CreateChannelCallback;
void createChannel(const std::string &channel, const std::string &user, CreateChannelCallback callback);
private:
void handleSendMessage(HTTPRequest *req, bool ok, rapidjson::Document &resp, const std::string &data);
void handleSlackChannelCreate(HTTPRequest *req, bool ok, rapidjson::Document &resp, const std::string &data, const std::string &channel, const std::string &user, CreateChannelCallback callback);
void handleSlackChannelList(HTTPRequest *req, bool ok, rapidjson::Document &resp, const std::string &data, const std::string &channel, const std::string &user, CreateChannelCallback callback);
void handleSlackChannelInvite(HTTPRequest *req, bool ok, rapidjson::Document &resp, const std::string &data, const std::string &channel, const std::string &user, CreateChannelCallback callback);
private:
Component *m_component;
SlackIdManager *m_idManager;
std::string m_token;
std::string m_domain;
};
}
|