public Task <Result> Delete(Action <BindingDeleteAction> action, CancellationToken cancellationToken = default) { cancellationToken.RequestCanceled(); var impl = new BindingDeleteActionImpl(); action(impl); impl.Validate(); string destination = impl.BindingDestination.Value; string vhost = impl.VirtualHost.Value.ToSanitizedName(); string bindingName = impl.BindingName.Value; string source = impl.BindingSource.Value; BindingType bindingType = impl.BindingType.Value; string url = bindingType == BindingType.Queue ? $"api/bindings/{vhost}/e/{source}/q/{destination}/{bindingName}" : $"api/bindings/{vhost}/e/{source}/e/{destination}/{bindingName}"; if (impl.Errors.Value.Any()) { return(Task.FromResult <Result>(new FaultedResult <BindingInfo>(impl.Errors.Value, new DebugInfoImpl(url)))); } return(Delete(url, cancellationToken)); }
public async Task <Result> Delete(Action <BindingDeleteAction> action, CancellationToken cancellationToken = default) { cancellationToken.RequestCanceled(); var impl = new BindingDeleteActionImpl(); action(impl); string destination = impl.BindingDestination.Value; string vhost = impl.VirtualHost.Value; string bindingName = impl.BindingName.Value; string source = impl.BindingSource.Value; BindingType bindingType = impl.BindingType.Value; var errors = new List <Error>(); if (string.IsNullOrWhiteSpace(destination)) { errors.Add(new ErrorImpl("The name of the destination binding (queue/exchange) is missing.")); } if (string.IsNullOrWhiteSpace(vhost)) { errors.Add(new ErrorImpl("The name of the virtual host is missing.")); } if (string.IsNullOrWhiteSpace(bindingName)) { errors.Add(new ErrorImpl("The name of the binding is missing.")); } if (errors.Any()) { return(new FaultedResult(errors)); } string url = bindingType == BindingType.Queue ? $"api/bindings/{SanitizeVirtualHostName(vhost)}/e/{source}/q/{destination}/{bindingName}" : $"api/bindings/{SanitizeVirtualHostName(vhost)}/e/{source}/e/{destination}/{bindingName}"; Result result = await Delete(url, cancellationToken); return(result); }
public async Task <Result> DeleteAsync(Action <BindingDeleteAction> action, CancellationToken cancellationToken = new CancellationToken()) { cancellationToken.RequestCanceled(LogInfo); var impl = new BindingDeleteActionImpl(); action(impl); string bindingDestination = impl.BindingDestination.Value; string vhost = impl.VirtualHost.Value; string bindingName = impl.BindingName.Value; string bindingSource = impl.BindingSource.Value; BindingType bindingType = impl.BindingType.Value; if (string.IsNullOrWhiteSpace(bindingDestination)) { throw new QueueMissingException("The name of the destination binding (queue/exchange) is missing."); } if (string.IsNullOrWhiteSpace(vhost)) { throw new VirtualHostMissingException("The name of the virtual host is missing."); } if (string.IsNullOrWhiteSpace(bindingName)) { throw new BindingException("The name of the binding is missing."); } string sanitizedVHost = vhost.SanitizeVirtualHostName(); string url = bindingType == BindingType.Queue ? $"api/bindings/{sanitizedVHost}/e/{bindingSource}/q/{bindingDestination}/{bindingName}" : $"api/bindings/{sanitizedVHost}/e/{bindingSource}/e/{bindingDestination}/{bindingName}"; HttpResponseMessage response = await HttpDelete(url, cancellationToken); Result result = response.GetResponse(); LogInfo($"Sent request to RabbitMQ server for binding '{impl.BindingName}'."); return(result); }