From 298e06974e7e2d746ee64211cbf55defc4567a59 Mon Sep 17 00:00:00 2001 From: "Matt@MBP13-PC" Date: Mon, 20 Aug 2012 12:36:56 -0100 Subject: [PATCH] Updated mediaService to use IFileSystem --- src/Umbraco.Core/Properties/AssemblyInfo.cs | 1 + src/umbraco.webservices/media/mediaService.cs | 31 +++++++++++-------- .../umbraco.webservices.csproj | 4 +++ 3 files changed, 23 insertions(+), 13 deletions(-) diff --git a/src/Umbraco.Core/Properties/AssemblyInfo.cs b/src/Umbraco.Core/Properties/AssemblyInfo.cs index 0c5ec9f7bb..eba8ec243a 100644 --- a/src/Umbraco.Core/Properties/AssemblyInfo.cs +++ b/src/Umbraco.Core/Properties/AssemblyInfo.cs @@ -22,6 +22,7 @@ using System.Runtime.InteropServices; [assembly: InternalsVisibleTo("umbraco")] [assembly: InternalsVisibleTo("businesslogic")] [assembly: InternalsVisibleTo("umbraco.editorControls")] +[assembly: InternalsVisibleTo("umbraco.webservices")] [assembly: InternalsVisibleTo("Umbraco.Tests")] [assembly: InternalsVisibleTo("Umbraco.Core")] diff --git a/src/umbraco.webservices/media/mediaService.cs b/src/umbraco.webservices/media/mediaService.cs index 4025d6623e..d9fc7df114 100644 --- a/src/umbraco.webservices/media/mediaService.cs +++ b/src/umbraco.webservices/media/mediaService.cs @@ -6,6 +6,7 @@ using System.Web.Services; using umbraco.IO; using umbraco.cms.businesslogic.media; using umbraco.cms.businesslogic.property; +using Umbraco.Core.IO; namespace umbraco.webservices.media { @@ -14,6 +15,12 @@ namespace umbraco.webservices.media [ToolboxItem(false)] public class mediaService : BaseWebService { + internal IMediaFileSystem _fs; + + public mediaService() + { + _fs = FileSystemProviderManager.Current.GetFileSystemProvider(); + } override public Services Service { @@ -100,12 +107,9 @@ namespace umbraco.webservices.media { if (!(p.Value == System.DBNull.Value)) { - string fileName = (string)p.Value; - string filePath = umbraco.IO.IOHelper.MapPath(fileName); - if (File.Exists(filePath)) - { - File.Delete(filePath); - } + var path = _fs.GetRelativePath(p.Value.ToString()); + if(_fs.FileExists(path)) + _fs.DeleteFile(path, true); } } @@ -124,16 +128,17 @@ namespace umbraco.webservices.media Media m = new Media(id); + var path = _fs.GetRelativePath(m.getProperty("umbracoFile").Id, filename); - System.IO.Directory.CreateDirectory(IOHelper.MapPath(SystemDirectories.Media + "/" + m.getProperty("umbracoFile").Id)); - string fullFilePath = IOHelper.MapPath(SystemDirectories.Media + "/" + m.getProperty("umbracoFile").Id + "/" + filename); + var stream = new MemoryStream(); + stream.Write(contents, 0, contents.Length); + stream.Seek(0, 0); - File.WriteAllBytes(fullFilePath, contents); + _fs.AddFile(path, stream); - FileInfo f = new FileInfo(fullFilePath); - m.getProperty("umbracoFile").Value = SystemDirectories.Media + "/" + filename; - m.getProperty("umbracoExtension").Value = f.Extension.Replace(".", ""); - m.getProperty("umbracoBytes").Value = f.Length.ToString(); + m.getProperty("umbracoFile").Value = _fs.GetUrl(path); + m.getProperty("umbracoExtension").Value = Path.GetExtension(filename).Substring(1); + m.getProperty("umbracoBytes").Value = _fs.GetSize(path); } diff --git a/src/umbraco.webservices/umbraco.webservices.csproj b/src/umbraco.webservices/umbraco.webservices.csproj index df0a5cce99..d3843988c0 100644 --- a/src/umbraco.webservices/umbraco.webservices.csproj +++ b/src/umbraco.webservices/umbraco.webservices.csproj @@ -120,6 +120,10 @@ {CCD75EC3-63DB-4184-B49D-51C1DD337230} umbraco.cms + + {31785bc3-256c-4613-b2f5-a1b0bdded8c1} + Umbraco.Core + {651E1350-91B6-44B7-BD60-7207006D7003} umbraco.presentation