public ImportBlogPostsResponse Execute(ImportBlogPostsViewModel request)
        {
            var fileUri = importService.ConstructFilePath(request.FileId);
            DownloadResponse downloadResponse;

            try
            {
                downloadResponse = storageService.DownloadObject(fileUri);
            }
            catch (Exception exc)
            {
                throw new ValidationException(() => BlogGlobalization.ImportBlogPosts_FailedToRetrieveFileFileStorage_Message,
                                              "Failed to retrieve blog posts import file from storage.", exc);
            }

            List <BlogPostImportResult> results;

            if (request.BlogPosts != null && request.BlogPosts.Count > 0)
            {
                downloadResponse.ResponseStream.Position = 0;
                var blogs = importService.DeserializeXMLStream(downloadResponse.ResponseStream);
                results = importService.ImportBlogs(blogs, request.BlogPosts, Context.Principal, request.CreateRedirects, request.RecreateCategoryTree, request.ReuseExistingCategories);
            }
            else
            {
                results = new List <BlogPostImportResult>();
            }

            Task.Factory
            .StartNew(() => { })
            .ContinueWith(task =>
            {
                try
                {
                    storageService.RemoveObject(fileUri);
                }
                catch (Exception exc)
                {
                    LogManager.GetCurrentClassLogger().Error("Failed to delete blog posts import file.", exc);
                }
            })
            .ContinueWith(task =>
            {
                try
                {
                    storageService.RemoveFolder(fileUri);
                }
                catch (Exception exc)
                {
                    LogManager.GetCurrentClassLogger().Error("Failed to delete blog posts import folder.", exc);
                }
            });

            return(new ImportBlogPostsResponse {
                Results = results
            });
        }