예제 #1
0
        public ICommandResponse Execute(ICommand command)
        {
            var request = command.Prepare();

            try
            {
                var webResponse = (HttpWebResponse)request.GetResponse();
                return(command.ParseResponse(webResponse));
            }
            catch (WebException ex)
            {
                var exception = new NinefoldApiException(ex);

                if (ex.Response.ContentLength > 0)
                {
                    var responseStream = ex.Response.GetResponseStream();
                    if ((responseStream != null) && (responseStream.CanRead))
                    {
                        var contentDocument = XDocument.Load(responseStream);
                        if (contentDocument.Root != null)
                        {
                            var message = contentDocument.Root.Elements().FirstOrDefault(e => e.Name.LocalName.Equals("message", StringComparison.InvariantCultureIgnoreCase));
                            var code    = contentDocument.Root.Elements().FirstOrDefault(e => e.Name.LocalName.Equals("code", StringComparison.InvariantCultureIgnoreCase));

                            exception.ErrorMessage = message == null ? string.Empty : message.Value;
                            exception.Code         = code == null ? string.Empty : code.Value;
                        }
                    }
                }

                throw exception;
            }
        }
        public void DeleteUserMetadata_ShouldReturnNinefoldExceptionWithMessage_OnBrokenRequest()
        {
            NinefoldApiException apiException = null;

            try
            {
                _storageClient.DeleteUserMetadata(new DeleteUserMetadataRequest
                {
                    Resource = new Uri("someId", UriKind.Relative),
                    Tags     = "22"
                });
            }
            catch (NinefoldApiException ex)
            {
                apiException = ex;
                Assert.IsFalse(string.IsNullOrWhiteSpace(ex.Message), "No custom exception message was returned");
                Assert.IsFalse(string.IsNullOrWhiteSpace(ex.Code), "No custom exception code was returned");
            }

            Assert.IsNotNull(apiException, "No api exception was caught");
        }