public bool Execute(Guid fileId)
        {
            var fileUri = importService.ConstructFilePath(fileId);

            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(true);
        }
        public UploadBlogsImportFileResponse Execute(UploadImportFileViewModel request)
        {
            var fileId  = Guid.NewGuid();
            var fileUri = importService.ConstructFilePath(fileId);

            using (var stream = new MemoryStream())
            {
                request.FileStream.CopyTo(stream);

                try
                {
                    var upload = new UploadRequest();
                    upload.CreateDirectory     = true;
                    upload.Uri                 = fileUri;
                    upload.InputStream         = request.FileStream;
                    upload.IgnoreAccessControl = true;

                    storageService.UploadObject(upload);
                }
                catch (Exception exc)
                {
                    throw new ValidationException(() => BlogGlobalization.ImportBlogPosts_FailedToSaveFileToStorage_Message,
                                                  "Failed to save blog posts import file to storage.",
                                                  exc);
                }

                stream.Position = 0;
                var blogs   = importService.DeserializeXMLStream(stream);
                var results = importService.ValidateImport(blogs);

                return(new UploadBlogsImportFileResponse {
                    Results = results, FileId = fileId
                });
            }
        }
Пример #3
0
        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
            });
        }