package codeine.servlets.api_servlets; import java.util.List; import javax.inject.Inject; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import codeine.api.CommandStatusJson; import codeine.command_peer.CommandExecutorHelper; import codeine.command_peer.NodesCommandExecuterProvider; import codeine.permissions.IUserWithPermissions; import codeine.permissions.UserPermissionsGetter; import codeine.servlet.AbstractApiServlet; import codeine.utils.JsonUtils; import com.google.common.collect.Lists; public class CommandExecutorApiServlet extends AbstractApiServlet { private static final long serialVersionUID = 1L; @Inject private NodesCommandExecuterProvider nodesCommandExecuterProvider; @Inject private UserPermissionsGetter permissionsManager; @Override protected void myGet(HttpServletRequest request, HttpServletResponse response){ setNoCache(response); List<CommandStatusJson> active = nodesCommandExecuterProvider.getActive(); List<CommandStatusJson> activeWithPermissions = Lists.newArrayList(); IUserWithPermissions user = permissionsManager.user(request); for (CommandStatusJson commandStatusJson : active) { if (user.canRead(commandStatusJson.project())){ CommandStatusJson c = JsonUtils.cloneJson(commandStatusJson, CommandStatusJson.class); c.can_cancel(CommandExecutorHelper.canCancel(user, c.user())); activeWithPermissions.add(c); } } writeResponseJson(response, activeWithPermissions); } @Override protected boolean checkPermissions(HttpServletRequest request) { return true; } }