Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }