Exemplo n.º 1
0
        public void DirectoryNotEmptyExceptionCtor()
        {
            DirectoryNotEmptyException ex = new DirectoryNotEmptyException("message", "path");

            ex.Message.Should().Be("message");
            ex.Path.Should().Be("path");
        }
Exemplo n.º 2
0
        public static EtcdException ProcessException(this FlurlHttpException This)
        {
            if (This.IsTimeoutException())
            {
                return(This.AsTimeoutException());
            }
            if (This.IsInvalidHostException())
            {
                return(This.AsInvalidHostException());
            }
            if (This.IsInvalidRequestException())
            {
                return(This.AsInvalidRequestException());
            }
            if (This.IsBadRequestException())
            {
                return(This.AsBadRequestException());
            }
            if (This.IsServiceUnavailableException())
            {
                return(This.AsServiceUnavailableException());
            }
            if (This.IsHttpConnectionException())
            {
                return(This.AsHttpConnectionException());
            }

            var etcdError = This.GetResponseJson <EtcdError>();

            if (etcdError == null)
            {
                return(new UnknownErrorException(This.Message));
            }

            var message = etcdError.Message;

            etcdError.ErrorCode = etcdError.ErrorCode
                                  ?? (This.GetEtcdErrorCode() ?? EtcdErrorCode.Unknown);

            EtcdException exception;

            // Ugh. The switch from hell.
            switch (etcdError.ErrorCode.Value)
            {
            case EtcdErrorCode.KeyNotFound:
                exception = new KeyNotFoundException(message);
                break;

            case EtcdErrorCode.TestFailed:
                exception = new TestFailedException(message);
                break;

            case EtcdErrorCode.NotFile:
                exception = new NotAFileException(message);
                break;

            case EtcdErrorCode.NoMorePeer:
                exception = new NoMorePeerException(message);
                break;

            case EtcdErrorCode.NotDirectory:
                exception = new NotADirectoryException(message);
                break;

            case EtcdErrorCode.NodeExists:
                exception = new NodeExistsException(message);
                break;

            case EtcdErrorCode.KeyIsPreserved:
                exception = new KeyIsPreservedException(message);
                break;

            case EtcdErrorCode.RootReadOnly:
                exception = new RootIsReadOnlyException(message);
                break;

            case EtcdErrorCode.DirectoryNotEmpty:
                exception = new DirectoryNotEmptyException(message);
                break;

            case EtcdErrorCode.ExistingPeerAddress:
                exception = new ExistingPeerAddressException(message);
                break;

            case EtcdErrorCode.ValueRequired:
                exception = new ValueRequiredException(message);
                break;

            case EtcdErrorCode.PreviousValueRequired:
                exception = new PreviousValueRequiredException(message);
                break;

            case EtcdErrorCode.TtlNotANumber:
                exception = new TtlNotANumberException(message);
                break;

            case EtcdErrorCode.IndexNotANumber:
                exception = new IndexNotANumberException(message);
                break;

            case EtcdErrorCode.ValueOrTtlRequired:
                exception = new ValueOrTtlRequiredException(message);
                break;

            case EtcdErrorCode.TimeoutNotANumber:
                exception = new TimeoutNotANumberException(message);
                break;

            case EtcdErrorCode.NameRequired:
                exception = new NameRequiredException(message);
                break;

            case EtcdErrorCode.IndexOrValueRequired:
                exception = new IndexOrValueRequiredException(message);
                break;

            case EtcdErrorCode.IndexValueMutex:
                exception = new IndexValueMutexException(message);
                break;

            case EtcdErrorCode.InvalidField:
                exception = new InvalidFieldException(message);
                break;

            case EtcdErrorCode.InvalidForm:
                exception = new InvalidFormException(message);
                break;

            case EtcdErrorCode.RaftInternal:
                exception = new RaftInternalException(message);
                break;

            case EtcdErrorCode.LeaderElect:
                exception = new LeaderElectException(message);
                break;

            case EtcdErrorCode.WatcherCleared:
                exception = new WatcherClearedException(message);
                break;

            case EtcdErrorCode.EventIndexCleared:
                exception = new EventIndexClearedException(message);
                break;

            case EtcdErrorCode.StandbyInternal:
                exception = new StandbyInternalException(message);
                break;

            case EtcdErrorCode.InvalidActiveSize:
                exception = new InvalidActiveSizeException(message);
                break;

            case EtcdErrorCode.InvalidRemoveDelay:
                exception = new InvalidRemoveDelayException(message);
                break;

            case EtcdErrorCode.ClientInternal:
                exception = new ClientInternalException(message);
                break;

            default:
                exception = new UnknownErrorException(message);
                break;
            }

            exception.EtcdError = etcdError;
            if (This.Call != null)
            {
                exception.HttpStatusCode = This.Call.HttpStatus;
                exception.RequestUrl     = This.Call.Request.RequestUri.ToString();
                exception.RequestMethod  = This.Call.Request.Method;
            }

            return(exception);
        }