use of org.finos.symphony.toolkit.json.EntityJson in project spring-bot by finos.
the class SymphonyHistoryImpl method getEntityJsonFromHistory.
@Override
public <X> List<EntityJson> getEntityJsonFromHistory(Class<X> type, Addressable address, Instant since) {
MessageSearchQuery msq = createMessageSearchQuery(type, address, since, null);
V4MessageList out = messageApi.v1MessageSearchPost(msq, null, null, 0, 50, null, null);
return out.stream().map(msg -> getEntityJson(msg)).filter(e -> e != null).collect(Collectors.toList());
}
use of org.finos.symphony.toolkit.json.EntityJson in project spring-bot by finos.
the class ElementsHandler method accept.
@SuppressWarnings("unchecked")
@Override
public void accept(V4Event t) {
try {
V4SymphonyElementsAction action = t.getPayload().getSymphonyElementsAction();
if (action != null) {
Map<String, Object> formValues = (Map<String, Object>) action.getFormValues();
String verb = (String) formValues.get("action");
String formId = action.getFormId();
Object currentForm;
if (hasFormData(formValues)) {
currentForm = formConverter.convert(formValues, formId);
} else {
currentForm = null;
}
EntityJson data = retrieveData(action.getFormMessageId());
Addressable rr = ruBuilder.loadRoomById(action.getStream().getStreamId());
User u = ruBuilder.loadUserById(t.getInitiator().getUser().getUserId());
// if we're not in a room, address the user directly.
rr = rr == null ? u : rr;
Errors e = ErrorHelp.createErrorHolder();
if (validated(currentForm, e)) {
FormAction ea = new FormAction(rr, u, currentForm, verb, data);
try {
Action.CURRENT_ACTION.set(ea);
for (ActionConsumer c : elementsConsumers) {
try {
c.accept(ea);
} catch (Exception ee) {
LOG.error("Failed to handle consumer " + c, ee);
}
}
} finally {
Action.CURRENT_ACTION.set(Action.NULL_ACTION);
}
} else {
WorkResponse fr = new WorkResponse(rr, currentForm, WorkMode.EDIT, ButtonList.of(new Button(verb, Button.Type.ACTION, "Retry")), convertErrorsToMap(e));
rh.accept(fr);
}
}
} catch (Exception e) {
LOG.error("Couldn't handle event " + t, e);
}
}
use of org.finos.symphony.toolkit.json.EntityJson in project spring-bot by finos.
the class LogMessageHandlerImpl method serializeJson.
public String serializeJson(LogMessage out) {
try {
EntityJson json = new EntityJson();
json.put(SHARED_STREAM_JSON_KEY, out);
return om.writeValueAsString(json);
} catch (JsonProcessingException e) {
throw new SharedStreamException(e);
}
}
use of org.finos.symphony.toolkit.json.EntityJson in project spring-bot by finos.
the class RoomWelcomeEventConsumer method accept.
@Override
public void accept(V4Event t) {
V4RoomCreated roomCreated = t.getPayload().getRoomCreated();
V4UserJoinedRoom userJoined = t.getPayload().getUserJoinedRoom();
String streamId;
EntityJson json = new EntityJson();
json.put("bot", u);
if (roomCreated != null) {
json.put("room", roomCreated.getRoomProperties());
json.put("stream", roomCreated.getStream());
streamId = roomCreated.getStream().getStreamId();
} else if (userJoined != null) {
json.put("user", userJoined.getAffectedUser());
json.put("stream", userJoined.getStream());
streamId = userJoined.getStream().getStreamId();
} else {
// doesn't need a welcome message
return;
}
String jsonStr;
try {
jsonStr = om.writeValueAsString(json);
messagesApi.v4StreamSidMessageCreatePost(null, streamId, welcomeMessageML, jsonStr, null, null, null, null);
} catch (Exception e) {
LOG.error("Couldn't send welcome message: ", e);
}
}
use of org.finos.symphony.toolkit.json.EntityJson in project spring-bot by finos.
the class SymphonyNotificator method sendNotification.
private void sendNotification(String project, String build, String statusText, String statusColor, Set<SUser> users, Build bt) {
MessagesApi messages;
String jsonString;
String template;
Config config = c.getConfig();
try {
String details = bt.getLogMessages(0, Integer.MAX_VALUE).stream().filter(m -> !m.contains("errorreport")).filter(m -> m.contains("error")).map(a -> HtmlUtils.htmlEscape(a)).reduce("", (a, b) -> a + "<br/>" + b);
String url = sBuildServer.getRootUrl() + "/project.html?projectId=" + URIUtil.encodeQuery(bt.getProjectId());
BuildData bd = new BuildData(project, build, statusText, statusColor, url, details);
EntityJson json = new EntityJson();
json.put("teamcity", bd);
jsonString = c.getObjectMapper().writeValueAsString(json);
log.warn("JSON: \n" + jsonString);
} catch (Exception e1) {
log.error("Couldn't format string ", e1);
return;
}
try {
messages = c.getAPI(MessagesApi.class);
} catch (Exception e) {
log.error("Couldn't aquire symphony API ", e);
return;
}
if (StringUtils.hasText(config.getTemplate())) {
template = config.getTemplate();
log.warn("Using custom symphony template");
} else {
template = asString(rl.getResource("classpath:/template.ftl"));
log.warn("Using built-in symphony template");
}
for (SUser sUser : users) {
String streamId = sUser.getPropertyValue(symphonyStreamId);
log.warn("Sending notification to Symphony on " + streamId);
if (StringUtils.hasText(streamId)) {
try {
messages.v4StreamSidMessageCreatePost(null, streamId, template, jsonString, null, null, null, null);
} catch (Exception e) {
log.error("Couldn't send message to symphony ", e);
}
}
}
}
Aggregations