io.dangernoodle.slack.client.SlackSessionObservers Maven / Gradle / Ivy
The newest version!
package io.dangernoodle.slack.client;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import io.dangernoodle.slack.client.rtm.SlackEventObserver;
import io.dangernoodle.slack.events.SlackHelloEvent;
import io.dangernoodle.slack.events.SlackPongEvent;
import io.dangernoodle.slack.events.channel.SlackChannelCreatedEvent;
import io.dangernoodle.slack.events.channel.SlackChannelJoinedEvent;
import io.dangernoodle.slack.events.channel.SlackChannelLeftEvent;
import io.dangernoodle.slack.events.user.SlackUserChangeEvent;
import io.dangernoodle.slack.objects.SlackChannel;
import io.dangernoodle.slack.objects.SlackMessageable;
import io.dangernoodle.slack.objects.SlackTeam;
import io.dangernoodle.slack.objects.SlackUser;
/**
* Observer implementations added by the client
*
* @since 0.1.0
*/
class SlackSessionObservers
{
private static final Logger logger = LoggerFactory.getLogger(SlackSessionObservers.class);
/** updates the session with newly created channels */
static final SlackEventObserver channelCreatedObserver = (event, client) -> {
SlackChannel channel = event.getChannel();
logger.debug("channel created event received, adding new channel [{}]", channel.getName());
client.getSession().updateChannels(channel);
};
/** updates the session when a group (private channel) is joined */
static final SlackEventObserver groupJoinedObserver = (event, client) -> {
SlackChannel channel = event.getChannel();
logger.debug("group joined event received, adding private channel [{}]", channel.getName());
client.getSession().updateChannels(channel);
};
/** updates the session when a group (private channel) is left */
static final SlackEventObserver groupLeftObserver = (event, client) -> {
SlackMessageable.Id channel = event.getChannel();
logger.debug("group left event received, removing private channel [{}]", channel.value());
client.getSession().removeChannel(channel);
};
/** hello event observer to log session establishment */
static final SlackEventObserver helloObserver = (event, client) -> {
SlackConnectionSession session = client.getSession();
SlackTeam team = session.getTeam();
logger.info("team: {} ({})", team.getName(), team.getId().value());
SlackUser self = session.getSelfUser();
logger.info("self: {} ({})", self.getName(), self.getId().value());
logger.info("slack session established!");
};
/** pong event observer for the heartbeat thread */
static final SlackEventObserver pongObserver = (event, client) -> {
client.getSession().updateLastPingId(event.getId());
logger.debug("pong event received in {} ms", System.currentTimeMillis() - event.getTime());
};
/** updates the sesion when a user has changed */
static final SlackEventObserver userChangedObserver = (event, client) -> {
SlackUser user = event.getUser();
logger.debug("user changed event received, updating user [{}]", user.getName());
client.getSession().updateUsers(user);
};
// TODO: add unknown event listeners that log the events, add option to disable them
private SlackSessionObservers()
{
// private
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy