public override async Task <int> ExecuteAsync() { IRemote remote = RemoteFactory.GetBarOnlyRemote(_options, Logger); try { Subscription deletedSubscription = await remote.DeleteSubscriptionAsync(_options.Id); Console.WriteLine($"Successfully deleted subscription with id '{_options.Id}'"); return(Constants.SuccessCode); } catch (RestApiException e) when(e.Response.StatusCode == HttpStatusCode.NotFound) { // Not found is fine to ignore. If we get this, it will be an aggregate exception with an inner API exception // that has a response message code of NotFound. Return success. Console.WriteLine($"Subscription with id '{_options.Id}' does not exist."); return(Constants.SuccessCode); } catch (Exception e) { Logger.LogError(e, $"Failed to delete subscription with id '{_options.Id}'"); return(Constants.ErrorCode); } }
public override async Task <int> ExecuteAsync() { try { IRemote remote = RemoteFactory.GetBarOnlyRemote(_options, Logger); bool noConfirm = _options.NoConfirmation; List <Subscription> subscriptionsToDelete = new List <Subscription>(); if (!string.IsNullOrEmpty(_options.Id)) { // Look up subscription so we can print it later. try { Subscription subscription = await remote.GetSubscriptionAsync(_options.Id); subscriptionsToDelete.Add(subscription); } catch (RestApiException e) when(e.Response.Status == (int)HttpStatusCode.NotFound) { Console.WriteLine($"Subscription with id '{_options.Id}' was not found."); return(Constants.ErrorCode); } } else { if (!_options.HasAnyFilters()) { Console.WriteLine($"Please specify one or more filters to select which subscriptions should be deleted (see help)."); return(Constants.ErrorCode); } IEnumerable <Subscription> subscriptions = await _options.FilterSubscriptions(remote); if (!subscriptions.Any()) { Console.WriteLine("No subscriptions found matching the specified criteria."); return(Constants.ErrorCode); } subscriptionsToDelete.AddRange(subscriptions); } if (!noConfirm) { // Print out the list of subscriptions about to be triggered. Console.WriteLine($"Will delete the following {subscriptionsToDelete.Count} subscriptions..."); foreach (var subscription in subscriptionsToDelete) { Console.WriteLine($" {UxHelpers.GetSubscriptionDescription(subscription)}"); } if (!UxHelpers.PromptForYesNo("Continue?")) { Console.WriteLine($"No subscriptions deleted, exiting."); return(Constants.ErrorCode); } } Console.Write($"Deleting {subscriptionsToDelete.Count} subscriptions...{(noConfirm ? Environment.NewLine : "")}"); foreach (var subscription in subscriptionsToDelete) { // If noConfirm was passed, print out the subscriptions as we go if (noConfirm) { Console.WriteLine($" {UxHelpers.GetSubscriptionDescription(subscription)}"); } await remote.DeleteSubscriptionAsync(subscription.Id.ToString()); } Console.WriteLine("done"); return(Constants.SuccessCode); } catch (AuthenticationException e) { Console.WriteLine(e.Message); return(Constants.ErrorCode); } catch (Exception e) { Logger.LogError(e, "Unexpected error while deleting subscriptions."); return(Constants.ErrorCode); } }