Changeset - 2ce9fd2e16d5
[Not reviewed]
0 3 0
Jan Kaluza - 9 years ago 2016-01-29 14:57:17
jkaluza@redhat.com
Slack: Store info about created channel to SlackIdManager
3 files changed with 45 insertions and 12 deletions:
0 comments (0 inline, 0 general)
spectrum/src/frontends/slack/SlackAPI.cpp
Show inline comments
 
@@ -217,7 +217,31 @@ void SlackAPI::getSlackChannelInfo(HTTPRequest *req, bool ok, rapidjson::Documen
 
		return;
 
	}
 

	
 
	GET_ARRAY(resp, channels);
 
	rapidjson::Value &channels = resp["channels"];
 
	if (!channels.IsArray()) {
 
		rapidjson::Value &channel = resp["channel"];
 
		if (channel.IsObject()) {
 
			SlackChannelInfo info;
 

	
 
			STORE_STRING(channel, id);
 
			info.id = id;
 

	
 
			STORE_STRING(channel, name);
 
			info.name = name;
 

	
 
			rapidjson::Value &members = channel["members"];
 
			for (int y = 0; members.IsArray() && y < members.Size(); y++) {
 
				if (!members[y].IsString()) {
 
					continue;
 
				}
 

	
 
				info.members.push_back(members[y].GetString());
 
			}
 

	
 
			ret[info.name] = info;
 
		}
 
		return;
 
	}
 

	
 
	for (int i = 0; i < channels.Size(); i++) {
 
		if (!channels[i].IsObject()) {
 
@@ -360,8 +384,11 @@ void SlackAPI::handleSlackChannelInvite(HTTPRequest *req, bool ok, rapidjson::Do
 
}
 

	
 
void SlackAPI::handleSlackChannelCreate(HTTPRequest *req, bool ok, rapidjson::Document &resp, const std::string &data, const std::string &channel, const std::string &userId, CreateChannelCallback callback) {
 
	std::string channelId = getChannelId(req, ok, resp, data);
 
	if (channelId.empty()) {
 
	std::map<std::string, SlackChannelInfo> &channels = m_idManager->getChannels();
 
	SlackAPI::getSlackChannelInfo(req, ok, resp, data, channels);
 

	
 
	std::string channelId = m_idManager->getId(channel);
 
	if (channelId == channel) {
 
		LOG4CXX_INFO(logger, "Error creating channel " << channel << ".");
 
		return;
 
	}
spectrum/src/frontends/slack/SlackIdManager.cpp
Show inline comments
 
@@ -55,22 +55,22 @@ const std::string &SlackIdManager::getName(const std::string &id) {
 
}
 

	
 
const std::string &SlackIdManager::getId(const std::string &name) {
 
	for (std::map<std::string, SlackChannelInfo>::const_iterator it = m_channels.begin(); it != m_channels.end(); ++it) {
 
		if (it->second.name == name) {
 
			return it->second.id;
 
		}
 
	if (m_channels.find(name) == m_channels.end()) {
 
		return name;
 
	}
 

	
 
	return name;
 
	return m_channels[name].id;
 
}
 

	
 
bool SlackIdManager::hasMember(const std::string &channelId, const std::string &userId) {
 
	if (m_channels.find(channelId) == m_channels.end()) {
 
		return false;
 

	
 
	for (std::map<std::string, SlackChannelInfo>::const_iterator it = m_channels.begin(); it != m_channels.end(); ++it) {
 
		if (it->second.id == channelId) {
 
			return std::find(it->second.members.begin(), it->second.members.end(), userId) != it->second.members.end();
 
		}
 
	}
 

	
 
	SlackChannelInfo &channel = m_channels[channelId];
 
	return std::find(channel.members.begin(), channel.members.end(), userId) != channel.members.end();
 
	return false;
 
}
 

	
 

	
spectrum/src/frontends/slack/SlackRTM.cpp
Show inline comments
 
@@ -124,12 +124,18 @@ void SlackRTM::handlePayloadReceived(const std::string &payload) {
 
			text = "/me " + text;
 
			STORE_STRING(d, user);
 
			onMessageReceived(channel, user, text, ts);
 
		}
 
		else if (subtype == "channel_join") {
 
			
 
		}
 
		else {
 
			STORE_STRING(d, user);
 
			onMessageReceived(channel, user, text, ts);
 
		}
 
	}
 
	else if (type == "channel_joined") {
 
		
 
	}
 
}
 

	
 
void SlackRTM::sendMessage(const std::string &channel, const std::string &message) {
0 comments (0 inline, 0 general)