Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.net.URI;
import java.time.LocalDate;
import java.util.Set;
Expand All @@ -36,6 +39,7 @@
@ExecuteOn(TaskExecutors.BLOCKING)
@Tag(name = "pulse-responses")
public class PulseResponseController {
private static final Logger LOG = LoggerFactory.getLogger(PulseResponseController.class);

private final PulseResponseService pulseResponseServices;
private final MemberProfileServices memberProfileServices;
Expand Down Expand Up @@ -146,13 +150,22 @@ public HttpResponse<PulseResponse> externalPulseResponse(
@Header("X-Slack-Request-Timestamp") String timestamp,
@Body String requestBody,
HttpRequest<?> request) {
// DEBUG Only
LOG.info(requestBody);

// Validate the request
if (slackSignatureVerifier.verifyRequest(signature,
timestamp, requestBody)) {
// DEBUG Only
LOG.info("Request has been verified");

PulseResponseCreateDTO pulseResponseDTO =
SlackPulseResponseConverter.get(memberProfileServices,
requestBody);

// DEBUG Only
LOG.info("Request has been converted");

// Create the pulse response
PulseResponse pulseResponse = pulseResponseServices.unsecureSave(
new PulseResponse(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
import com.objectcomputing.checkins.services.memberprofile.MemberProfile;
import com.objectcomputing.checkins.services.memberprofile.MemberProfileServices;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.core.JsonProcessingException;
Expand All @@ -13,6 +16,8 @@
import java.time.LocalDate;

public class SlackPulseResponseConverter {
private static final Logger LOG = LoggerFactory.getLogger(SlackPulseResponseConverter.class);

public static PulseResponseCreateDTO get(
MemberProfileServices memberProfileServices, String body) {
final String key = "payload=";
Expand Down Expand Up @@ -50,11 +55,14 @@ public static PulseResponseCreateDTO get(

return response;
} catch(JsonProcessingException ex) {
LOG.error(ex.getMessage());
throw new BadArgException(ex.getMessage());
} catch(NumberFormatException ex) {
LOG.error(ex.getMessage());
throw new BadArgException("Pulse scores must be integers");
}
} else {
LOG.error(body);
throw new BadArgException("Invalid pulse response body");
}
}
Expand All @@ -70,6 +78,7 @@ private static String getMappedValue(Map<String, Object> map,
}

if (required) {
LOG.error("Expected {}.{} was not found", key, valueKey);
throw new BadArgException(
String.format("Expected %s.%s was not found", key, valueKey));
} else {
Expand Down
Loading