/**
 * Helper service for working with the registry's container. Only works in enterprise.
 */
angular.module('quay').factory('ContainerService', ['ApiService', '$timeout',

function(ApiService, $timeout) {
  var containerService = {};
  containerService.restartContainer = function(callback) {
    ApiService.scShutdownContainer(null, null).then(function(resp) {
      $timeout(callback, 2000);
    }, ApiService.errorDisplay('Cannot restart container. Please report this to support.'))
  };

  containerService.scheduleStatusCheck = function(callback) {
    $timeout(function() {
      containerService.checkStatus(callback);
    }, 2000);
  };

  containerService.checkStatus = function(callback, force_ssl) {
    var errorHandler = function(resp) {
      if (resp.status == 404 || resp.status == 502) {
        // Container has not yet come back up, so we schedule another check.
        containerService.scheduleStatusCheck(callback);
        return;
      }

      return ApiService.errorDisplay('Cannot load status. Please report this to support')(resp);
    };

    ApiService.scRegistryStatus(null, null)
              .then(callback, errorHandler, /* background */true, /* force ssl*/force_ssl);
  };

  return containerService;
}]);
