package org.bigbluebutton.core.pubsub.receivers;
import org.bigbluebutton.common.messages.*;
import com.google.gson.Gson;
import com.google.gson.JsonParser;
import com.google.gson.JsonObject;
import org.bigbluebutton.core.api.IBigBlueButtonInGW;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class PollingMessageReceiver implements MessageHandler{
private static final Logger log = LoggerFactory.getLogger(PollingMessageReceiver.class);
private IBigBlueButtonInGW bbbGW;
public PollingMessageReceiver(IBigBlueButtonInGW bbbGW) {
this.bbbGW = bbbGW;
}
@Override
public void handleMessage(String pattern, String channel, String message) {
if (channel.equalsIgnoreCase(MessagingConstants.TO_POLLING_CHANNEL)) {
log.debug("Polling message: " + channel + " " + message);
JsonParser parser = new JsonParser();
JsonObject obj = (JsonObject) parser.parse(message);
if (obj.has("header") && obj.has("payload")) {
JsonObject header = (JsonObject) obj.get("header");
if (header.has("name")) {
String messageName = header.get("name").getAsString();
if (VotePollUserRequestMessage.VOTE_POLL_REQUEST.equals(messageName)) {
VotePollUserRequestMessage msg = VotePollUserRequestMessage.fromJson(message);
bbbGW.votePoll(msg.meetingId, msg.userId, msg.pollId, msg.questionId, msg.answerId);
} else if (StartPollRequestMessage.START_POLL_REQUEST.equals(messageName)){
log.debug("Received StartPollRequest message");
StartPollRequestMessage msg = StartPollRequestMessage.fromJson(message);
bbbGW.startPoll(msg.meetingId, msg.requesterId, msg.pollId, msg.pollType);
} else if (StopPollRequestMessage.STOP_POLL_REQUEST.equals(messageName)){
StopPollRequestMessage msg = StopPollRequestMessage.fromJson(message);
bbbGW.stopPoll(msg.meetingId, msg.requesterId, msg.pollId);
} else if (ShowPollResultRequestMessage.SHOW_POLL_RESULT_REQUEST.equals(messageName)){
ShowPollResultRequestMessage msg = ShowPollResultRequestMessage.fromJson(message);
bbbGW.showPollResult(msg.meetingId, msg.requesterId, msg.pollId, msg.show);
} else if (StartCustomPollRequestMessage.START_CUSTOM_POLL_REQUEST.equals(messageName)){
Gson gson = new Gson();
StartCustomPollRequestMessage msg = gson.fromJson(message, StartCustomPollRequestMessage.class);
bbbGW.handleBigBlueButtonMessage(msg);
}
}
}
}
}
}