use of io.gravitee.alert.api.condition.Filter in project gravitee-management-rest-api by gravitee-io.
the class ApplicationAlertServiceImpl method create.
@Override
public AlertTriggerEntity create(String applicationId, NewAlertTriggerEntity alert) {
final ApplicationEntity application = applicationService.findById(applicationId);
alert.setName(generateAlertName(application, alert));
alert.setReferenceType(AlertReferenceType.APPLICATION);
alert.setReferenceId(application.getId());
alert.setSource("REQUEST");
alert.setSeverity(Trigger.Severity.INFO);
alert.setDampening(Dampening.strictCount(1));
Filter filter = StringCondition.equals("application", applicationId).build();
alert.setFilters(singletonList(filter));
final List<String> recipients = getNotificationRecipients(application.getId(), application.getGroups());
if (!CollectionUtils.isEmpty(recipients)) {
alert.setNotifications(createNotification(alert.getType(), recipients));
}
return alertService.create(alert);
}
use of io.gravitee.alert.api.condition.Filter in project gravitee-management-rest-api by gravitee-io.
the class ApplicationAlertServiceImpl method addMemberToApplication.
@Override
public void addMemberToApplication(String applicationId, String email) {
if (StringUtils.isEmpty(email)) {
return;
}
// check existence of application
applicationService.findById(applicationId);
alertService.findByReference(AlertReferenceType.APPLICATION, applicationId).forEach(trigger -> {
if (trigger.getNotifications() == null) {
trigger.setNotifications(createNotification(trigger.getType()));
}
final Optional<Notification> notificationOpt = trigger.getNotifications().stream().filter(n -> DEFAULT_EMAIL_NOTIFIER.equals(n.getType())).findFirst();
if (notificationOpt.isPresent()) {
Notification notification = notificationOpt.get();
try {
ObjectNode configuration = mapper.createObjectNode();
JsonNode emailNode = mapper.readTree(notification.getConfiguration());
configuration.put("to", emailNode.path("to").asText() + "," + email);
configuration.put("from", emailNode.path("from").asText());
configuration.put("subject", emailNode.path("subject").asText());
configuration.put("body", emailNode.path("body").asText());
notification.setConfiguration(mapper.writeValueAsString(configuration));
} catch (JsonProcessingException e) {
LOGGER.error("An error occurs while trying to add a recipient to the Alert notification", e);
throw new TechnicalManagementException("An error occurs while trying to add a recipient to the Alert notification");
}
} else {
trigger.setNotifications(createNotification(trigger.getType(), singletonList(email)));
}
alertService.update(convert(trigger));
});
}
use of io.gravitee.alert.api.condition.Filter in project gravitee-management-rest-api by gravitee-io.
the class ApplicationAlertServiceImpl method deleteMemberFromApplication.
@Override
public void deleteMemberFromApplication(String applicationId, String email) {
if (StringUtils.isEmpty(email)) {
return;
}
// check existence of application
applicationService.findById(applicationId);
alertService.findByReference(AlertReferenceType.APPLICATION, applicationId).forEach(trigger -> {
if (trigger.getNotifications() == null) {
trigger.setNotifications(createNotification(trigger.getType()));
}
final Optional<Notification> notificationOpt = trigger.getNotifications().stream().filter(n -> DEFAULT_EMAIL_NOTIFIER.equals(n.getType())).findFirst();
if (notificationOpt.isPresent()) {
final Notification notification = notificationOpt.get();
try {
ObjectNode configuration = mapper.createObjectNode();
JsonNode emailNode = mapper.readTree(notification.getConfiguration());
final String to = Arrays.stream(emailNode.path("to").asText().split(",|;|\\s")).filter(mailTo -> !mailTo.equals(email)).collect(Collectors.joining(","));
if (StringUtils.isEmpty(to)) {
trigger.setNotifications(emptyList());
} else {
configuration.put("to", to);
configuration.put("from", emailNode.path("from").asText());
configuration.put("subject", emailNode.path("subject").asText());
configuration.put("body", emailNode.path("body").asText());
notification.setConfiguration(mapper.writeValueAsString(configuration));
}
alertService.update(convert(trigger));
} catch (JsonProcessingException e) {
LOGGER.error("An error occurs while trying to add a recipient to the Alert notification", e);
throw new TechnicalManagementException("An error occurs while trying to add a recipient to the Alert notification");
}
}
});
}
Aggregations