package slacknotifications.teamcity;
import org.apache.http.HttpStatus;
import slacknotifications.SlackNotification;
import java.io.FileNotFoundException;
import java.io.IOException;
/**
* Created by Lokum on 22.06.2016.
*/
public final class NotificationUtility {
public void doPost(SlackNotification notification){
try {
if (notification.isEnabled()){
notification.post();
if (notification.getResponse() != null && !notification.getResponse().getOk()) {
Loggers.SERVER.error(this.getClass().getSimpleName() + " :: SlackNotification failed : "
+ notification.getChannel()
+ " returned error " + notification.getResponse().getError()
+ " " + notification.getErrorReason());
}
else {
Loggers.SERVER.info(this.getClass().getSimpleName() + " :: SlackNotification delivered : "
+ notification.getChannel()
+ " returned " + notification.getStatus()
+ " " + notification.getErrorReason());
}
Loggers.SERVER.debug(this.getClass().getSimpleName() + ":doPost :: content dump: " + notification.getPayload());
if (notification.isErrored()){
Loggers.SERVER.error(notification.getErrorReason());
}
if ((notification.getStatus() == null || notification.getStatus() > HttpStatus.SC_OK))
Loggers.ACTIVITIES.warn("SlackNotificationListener :: " + notification.getParam("projectId") + " SlackNotification (url: " + notification.getChannel() + " proxy: " + notification.getProxyHost() + ":" + notification.getProxyPort()+") returned HTTP status " + notification.getStatus().toString());
} else {
Loggers.SERVER.debug("SlackNotification NOT triggered: "
+ notification.getParam("buildStatus") + " " + notification.getChannel());
}
} catch (FileNotFoundException e) {
Loggers.SERVER.warn(this.getClass().getName() + ":doPost :: "
+ "A FileNotFoundException occurred while attempting to execute SlackNotification (" + notification.getChannel() + "). See the following stacktrace");
Loggers.SERVER.warn(e);
} catch (IOException e) {
Loggers.SERVER.warn(this.getClass().getName() + ":doPost :: "
+ "An IOException occurred while attempting to execute SlackNotification (" + notification.getChannel() + "). See the following stacktrace");
Loggers.SERVER.warn(e);
}
}
}