protected void doPost()

in usage-statistics-impl/src/jetbrains/buildServer/controllers/UsageStatisticsController.java [113:144]


  protected void doPost(@NotNull final HttpServletRequest request, @NotNull final HttpServletResponse response, @NotNull final Element xmlResponse) {
    if (request.getParameter("forceCollectingNow") != null) {
      myStatisticsCollector.forceAsynchronousCollectingNow();
      myAuditLog.logUserAction(ActionType.USAGE_STATISTICS_COLLECTING_STARTED, null, null);
      return;
    }

    final String reportingEnabledStr = request.getParameter("reportingEnabled");
    if (reportingEnabledStr != null) {
      final UsageStatisticsPermissionsChecker usageStatisticsPermissionsChecker =
        myPermissionsCheckerSupplier.get(TeamCityProperties.getProperty("teamcity.usageStatistics.permissionsCheckerImplementation"));

      if (!usageStatisticsPermissionsChecker.editAllowed(SessionUser.getUser(request))) {
        throw new AccessDeniedException(SessionUser.getUser(request), usageStatisticsPermissionsChecker.getAccessDeniedDescription());
      }

      myDataPersistor.markReportingSuggestionAsConsidered();
      final boolean reportingEnabled = "true".equalsIgnoreCase(reportingEnabledStr);
      try {
        setReportingEnabled(reportingEnabled);
        ActionMessages.getOrCreateMessages(request).addMessage(
          USAGE_STATISTICS_REPORTING_STATUS_MESSAGE_KEY,
          reportingEnabled ? "Usage statistics will be sent to JetBrains periodically" : "Usage statistics will not be sent to JetBrains"
        );
      }
      catch (final Throwable e) {
        Loggers.SERVER.error("Cannot update statistics reporting status: ", e);
        ActionMessages.getOrCreateMessages(request).addMessage(USAGE_STATISTICS_REPORTING_STATUS_MESSAGE_KEY, "Internal server error occurred. Please try again later.");
        xmlResponse.addContent("error");
      }
    }
  }