AppHarbor.Commands.RemoveDrainCommand.InnerExecute C# (CSharp) Method

InnerExecute() protected method

protected InnerExecute ( string arguments ) : void
arguments string
return void
        protected override void InnerExecute(string[] arguments)
        {
            var request = new RestRequest("applications/{slug}/drains", Method.GET)
                .AddUrlSegment("slug", ApplicationId)
                .AddHeader("Authorization", string.Format("BEARER {0}", _accessToken));
            request.RequestFormat = DataFormat.Json;

            var drains = _restClient.Execute<List<Drain>>(request);

            var drain = drains.Data.FirstOrDefault(x => x.Value == arguments[0]);

            if (drain == null)
            {
                throw new CommandException("No drains with that URL is associated with this application");
            }

            var url = new Uri(drain.Url);
            var destroyRequest = new RestRequest(url, Method.DELETE)
            {
                RequestFormat = DataFormat.Json,
            }
            .AddHeader("Authorization", string.Format("BEARER {0}", _accessToken));
            var destroyResponse = _restClient.Execute(destroyRequest);

            if (destroyResponse.StatusCode != HttpStatusCode.NoContent)
            {
                throw new CommandException("Couldn't remove drain");
            }
        }