bejancsaba commented on code in PR #5755:
URL: https://github.com/apache/nifi/pull/5755#discussion_r865698904


##########
minifi/minifi-c2/minifi-c2-service/src/main/java/org/apache/nifi/minifi/c2/service/ConfigService.java:
##########
@@ -147,6 +175,123 @@ protected ConfigurationProviderInfo 
initContentTypeInfo(List<ConfigurationProvid
         return new ConfigurationProviderInfo(mediaTypeList, contentTypes, 
null);
     }
 
+    @POST
+    @Path("/heartbeat")
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @ApiOperation(
+            value = "An endpoint for a MiNiFi Agent to send a heartbeat to the 
C2 server",
+            response = C2HeartbeatResponse.class
+    )
+    @ApiResponses({
+            @ApiResponse(code = 400, message = MESSAGE_400)})
+    public Response heartbeat(
+            @Context HttpServletRequest request, @Context HttpHeaders 
httpHeaders, @Context UriInfo uriInfo,
+            @ApiParam(required = true) final C2Heartbeat heartbeat) {
+
+        try {
+            
authorizer.authorize(SecurityContextHolder.getContext().getAuthentication(), 
uriInfo);
+        } catch (AuthorizationException e) {
+            logger.warn(HttpRequestUtil.getClientString(request) + " not 
authorized to access " + uriInfo, e);
+            return Response.status(403).build();
+        }
+
+        List<MediaType> acceptValues = httpHeaders.getAcceptableMediaTypes();
+        boolean defaultAccept = false;
+        if (acceptValues.size() == 0) {
+            acceptValues = Collections.singletonList(MediaType.WILDCARD_TYPE);
+            defaultAccept = true;
+        }
+        if (logger.isDebugEnabled()) {
+            StringBuilder builder = new StringBuilder("Handling request from ")
+                    .append(HttpRequestUtil.getClientString(request))
+                    .append(" with Accept");
+            if (defaultAccept) {
+                builder.append(" default value");
+            }
+            builder.append(": ")
+                    
.append(acceptValues.stream().map(Object::toString).collect(Collectors.joining(",
 ")));
+            logger.debug(builder.toString());
+        }
+
+        try {
+            final String flowId;
+            Map<String, List<String>> parameters = 
Collections.singletonMap("class", 
Collections.singletonList(heartbeat.getAgentClass()));
+            ConfigurationProviderValue configurationProviderValue = 
configurationCache.get(new ConfigurationProviderKey(acceptValues, parameters));
+            org.apache.nifi.minifi.c2.api.Configuration configuration = 
configurationProviderValue.getConfiguration();
+            try (InputStream inputStream = configuration.getInputStream();

Review Comment:
   Sounds good to me.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to