package com.hbakkum.rundeck.plugins.hipchat.roomnotifier;
import com.hbakkum.rundeck.plugins.hipchat.HipChatNotificationPluginException;
import com.hbakkum.rundeck.plugins.hipchat.http.HttpRequestExecutor;
import com.hbakkum.rundeck.plugins.hipchat.http.RestyHttpRequestExecutor;
import java.util.HashMap;
import java.util.Map;
import static com.hbakkum.rundeck.plugins.hipchat.HipChatNotificationPluginUtils.isNotEmpty;
/**
* @author Hayden Bakkum
*/
public class HipChatRoomNotifierFactory {
private static final Map<String, HipChatRoomNotifier> HIPCHAT_ROOM_NOTIFIERS = new HashMap<String, HipChatRoomNotifier>();
private static final HttpRequestExecutor httpRequestExecutor = new RestyHttpRequestExecutor();
static {
final HipChatRoomNotifier[] hipChatRoomNotifiers = {
new HipChatApiVersion1RoomNotifier(httpRequestExecutor),
new HipChatApiVersion2RoomNotifier(httpRequestExecutor)
};
for (final HipChatRoomNotifier hipChatRoomNotifier : hipChatRoomNotifiers) {
HIPCHAT_ROOM_NOTIFIERS.put(hipChatRoomNotifier.getSupportedApiVersion(), hipChatRoomNotifier);
}
}
public static HipChatRoomNotifier get(final String apiVersion, final String proxyHost, final String proxyPort) {
final HipChatRoomNotifier hipChatRoomNotifier = HIPCHAT_ROOM_NOTIFIERS.get(apiVersion);
if (hipChatRoomNotifier == null) {
throw new HipChatNotificationPluginException("Unknown or unsupported HipChat API version: ["+apiVersion+"]");
}
if (isNotEmpty(proxyHost) && isNotEmpty(proxyPort)) {
httpRequestExecutor.setProxy(proxyHost, Integer.valueOf(proxyPort));
}
return hipChatRoomNotifier;
}
}