/** * Deletes all of a user's sessions. Requires authentication by the session owner or a ROLE_ADMIN * user. * * @param sessionHeader The authentication information of the caller. * @param username The username of the session owner. * @return 200 OK. */ @DELETE @Produces(MediaType.APPLICATION_JSON) public Response deleteAllSessions( @HeaderParam(UserSession.HEADER) String sessionHeader, @PathParam("username") String username) throws ApiException { SQLConnection sql = SQLConnection.connectDefault(); try { UserSession session = UserSession.resume(sql, sessionHeader); if (!session.getUser().getUsername().equals(username) && !session.getUser().isRole("ROLE_ADMIN")) { throw new ApiException(ApiStatus.ACCESS_DENIED); } UserSession.endAll(sql, username); } finally { sql.close(); } // TODO: we should probably return the sessions that were killed. ApiResponse response = new ApiResponse(ApiStatus.OK); return Response.ok(response.serialize()).build(); }
public static <T> ApiResponse<T> NotOk(String errorMessage) { ApiResponse<T> response = new ApiResponse<>(); response.success = false; response.data = null; response.errorMessage = errorMessage; return response; }
@RequireSystemAccess @POST @Path(RootResource.APPLICATION_ID_PATH) @JSONP @Produces({MediaType.APPLICATION_JSON, "application/javascript"}) public ApiResponse addIndex( @Context UriInfo ui, @PathParam("applicationId") final String applicationIdStr, Map<String, Object> config, @QueryParam("callback") @DefaultValue("callback") String callback) throws Exception { Preconditions.checkNotNull( config, "Payload for config is null, please pass {replicas:int, shards:int} in body"); ApiResponse response = createApiResponse(); if (!config.containsKey("replicas") || !config.containsKey("shards") || !(config.get("replicas") instanceof Integer) || !(config.get("shards") instanceof Integer)) { throw new IllegalArgumentException( "body must contains 'replicas' of type int and 'shards' of type int"); } if (!config.containsKey("indexSuffix")) { throw new IllegalArgumentException("Please add an indexSuffix to your post"); } final UUID appId = UUIDUtils.tryExtractUUID(applicationIdStr); if (appId == null) { throw new IllegalArgumentException("app id was not parsed"); } EntityManager em = emf.getEntityManager(appId); em.addIndex( config.get("indexSuffix").toString(), (int) config.get("shards"), (int) config.get("replicas"), (String) config.get("writeConsistency")); response.setAction("Add index to alias"); return response; }
@RequireSystemAccess @GET @Path("rebuild/{jobId}") @JSONP @Produces({MediaType.APPLICATION_JSON, "application/javascript"}) public ApiResponse rebuildIndexesGet( @PathParam("jobId") String jobId, @QueryParam("callback") @DefaultValue("callback") String callback) throws Exception { logger.info("Getting status for index jobs"); Preconditions.checkNotNull(jobId, "query param jobId must not be null"); ReIndexService.ReIndexStatus status = getReIndexService().getStatus(jobId); final ApiResponse response = createApiResponse(); response.setAction("rebuild indexes"); response.setProperty("jobId", status.getJobId()); response.setProperty("status", status.getStatus()); response.setProperty("lastUpdatedEpoch", status.getLastUpdated()); response.setProperty("numberQueued", status.getNumberProcessed()); response.setSuccess(); return response; }
/** Execute the request and return the response. */ private ApiResponse executeAndCreateResponse( final ReIndexRequestBuilder request, final String callback) { final ReIndexService.ReIndexStatus status = getReIndexService().rebuildIndex(request); final ApiResponse response = createApiResponse(); response.setAction("rebuild indexes"); response.setProperty("jobId", status.getJobId()); response.setProperty("status", status.getStatus()); response.setProperty("lastUpdatedEpoch", status.getLastUpdated()); response.setProperty("numberQueued", status.getNumberProcessed()); response.setSuccess(); return response; }
/* * Returns successful API call result. * */ public static <T> ApiResponse<T> Ok(T data) { ApiResponse<T> response = new ApiResponse<>(); response.success = true; response.data = data; return response; }