protected ModelAndView doHandle()

in s3-artifact-storage-server/src/main/java/jetbrains/buildServer/artifacts/s3/web/S3OrphanedArtifactsController.java [71:109]


  protected ModelAndView doHandle(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response) throws Exception {
    if (!SdkHttpMethod.GET.name().equals(request.getMethod())) {
      response.setStatus(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
      return null;
    }

    if (!TeamCityProperties.getBoolean(SCANNER_ENABLED_FLAG)) {
      final ModelAndView error = SimpleView.createTextView("Artifact scanner is not enabled");
      error.setStatus(HttpStatus.FORBIDDEN);
      return error;
    }

    final String projectId = request.getParameter("projectId");
    final boolean scanBuilds = Boolean.parseBoolean(request.getParameter("scanBuilds"));
    final boolean calculateSizes = Boolean.parseBoolean(request.getParameter("calculateSizes"));
    final boolean skipErrors = Boolean.parseBoolean(request.getParameter("skipErrors"));
    final SUser user = SessionUser.getUser(request);
    final int pauseInterval = TeamCityProperties.getInteger(SCANNER_PAUSE_INTERVAL_SECONDS, SCANNER_DEFAULT_PAUSE_INTERVAL_SECONDS);
    if (myScanner.getLastScanTimestamp().isBefore(Instant.now().minus(pauseInterval, ChronoUnit.SECONDS))) {
      final boolean scanStarted = myScanner.tryScanArtifacts(projectId, user, scanBuilds, calculateSizes, skipErrors);
      if (scanStarted) {
        response.getWriter().println("Starting the scan");
        response.setStatus(HttpServletResponse.SC_ACCEPTED);
      } else if (myScanner.isScanning()) {
        final int currentScannedPaths = myScanner.getScannedPathsCount();
        response.getWriter().println("Scan in progress. Scanned: " + currentScannedPaths + " paths");
        response.setStatus(HttpServletResponse.SC_ACCEPTED);
      } else if (myScanner.getLastScanError() != null) {
        final ModelAndView error = SimpleView.createTextView("Scan ended with an error: " + myScanner.getLastScanError());
        error.setStatus(HttpStatus.INTERNAL_SERVER_ERROR);
        return error;
      }
    } else {
      response.getWriter().println("Last scan finished at " + DateTimeFormatter.ISO_INSTANT.format(myScanner.getLastScanTimestamp()));
      response.getWriter().println("Please wait for " + pauseInterval + " seconds before starting another scan");
      response.setStatus(HttpServletResponse.SC_ACCEPTED);
    }
    return null;
  }