示例#1
0
        public virtual MediaContent Update(Repository repository, MediaFolder mediaFolder, string uuid, string fileName, Stream fileStream,
                                           string userid, MediaContentMetadata metadata)
        {
            IsAllowExtension(fileName, mediaFolder.AllowedExtensions);


            var binaryContent = mediaFolder.CreateQuery().WhereEquals("UUID", uuid).First();
            var old           = new MediaContent(binaryContent);

            binaryContent.UserId = userid;
            binaryContent.UtcLastModificationDate = DateTime.UtcNow;

            binaryContent.FileName = fileName;
            binaryContent.UserKey  = fileName;
            binaryContent.UUID     = fileName;

            if (fileStream != null)
            {
                binaryContent.ContentFile = new ContentFile()
                {
                    Name     = fileName,
                    FileName = fileName,
                    Stream   = fileStream
                };
            }

            binaryContent.Metadata = metadata;
            Provider.Update(binaryContent, old);

            return(binaryContent);
        }
示例#2
0
        public int Count(string repositoryName, string folderName, string prefix)
        {
            var mediaFolder = new MediaFolder(new Repository(repositoryName), folderName);

            return(mediaFolder.CreateQuery().WhereContains("FileName", prefix)
                   .Count());
        }
        public void TestSimple()
        {
            //var binaryContentProvider = Providers.GetProviderFactory(repository.DBProvider).GetProvider<IContentProvider<BinaryContent>>();

            var binaryContent1 = new MediaContent(repository.Name, binaryFolder.Name);

            binaryContent1.UserKey     = "image1";
            binaryContent1.VirtualPath = "~/binary/image1.jpg";
            binaryContent1.ContentFile = new ContentFile()
            {
                Name     = "image1.jpg",
                FileName = "image1.jpg",
                Stream   = new MemoryStream(new byte[] { 1, 2, 3, 4, 5, 6 })
            };
            binaryContentProvider.Add(binaryContent1);

            var binaryContent2 = new MediaContent(repository.Name, binaryFolder.Name);

            binaryContent2.UserKey     = "image2";
            binaryContent2.VirtualPath = "~/binary/image2.jpg";
            binaryContent2.ContentFile = new ContentFile()
            {
                Name     = "image2.jpg",
                FileName = "image2.jpg",
                Stream   = new MemoryStream(new byte[] { 1, 2, 3, 4, 5, 6 })
            };
            binaryContentProvider.Add(binaryContent2);

            var query1 = binaryFolder.CreateQuery().WhereEquals("UUID", (string)(binaryContent1.UUID));

            Assert.AreEqual(1, query1.Count());
            var binaryContentItem1 = query1.First();

            Assert.AreEqual(binaryContent1.UUID, binaryContentItem1.UUID);
        }
示例#4
0
        public void Test1()
        {
            MediaContent binaryContent1 = new MediaContent();

            binaryContent1.Repository  = repository.Name;
            binaryContent1.FolderName  = binaryFolder.Name;
            binaryContent1.FileName    = "file1.jpg";
            binaryContent1.VirtualPath = "~/file1.jpg";
            Providers.DefaultProviderFactory.GetProvider <IMediaContentProvider>().Add(binaryContent1);

            MediaContent binaryContent2 = new MediaContent();

            binaryContent2.Repository  = repository.Name;
            binaryContent2.FolderName  = binaryFolder.Name;
            binaryContent2.FileName    = "file2.jpg";
            binaryContent2.VirtualPath = "~/file2.jpg";
            Providers.DefaultProviderFactory.GetProvider <IMediaContentProvider>().Add(binaryContent2);


            var query = binaryFolder.CreateQuery().OrderBy("id");

            Assert.AreEqual(2, query.Count());

            Assert.AreEqual("file1.jpg", query.First().FileName);
            Assert.AreEqual("file2.jpg", query.Last().FileName);

            Providers.DefaultProviderFactory.GetProvider <IMediaContentProvider>().Delete(binaryContent1);
            Assert.AreEqual(1, query.Count());
        }
示例#5
0
        public void Test_Get_Content()
        {
            MediaContent content = new MediaContent(repository.Name, mediaFolder.FullName);

            content.Published   = true;
            content.UserId      = "admin";
            content.ContentFile = new ContentFile()
            {
                FileName = "Test_Get_Content.zip",
                Stream   = new MemoryStream(new byte[10])
            };
            provider.Add(content);

            var gotContent = mediaFolder.CreateQuery().WhereEquals("FileName", content.FileName).First();

            Assert.AreEqual(content.FileName, gotContent.FileName);
            Assert.AreEqual(content.UserId, gotContent.UserId);
            Assert.AreEqual(content.Published, gotContent.Published);
            Console.WriteLine(content.VirtualPath, gotContent.VirtualPath);
        }
示例#6
0
        public void Delete(string repositoryName, string folderName, string fileName)
        {
            var mediaFolder = new MediaFolder(new Repository(repositoryName), folderName);
            var content     = mediaFolder.CreateQuery().WhereEquals("FileName", fileName)
                              .FirstOrDefault();

            if (content != null)
            {
                mediaContentProvider.Delete(content);
            }
        }
示例#7
0
        public IEnumerable <MediaContent> All(string repositoryName, string folderName
                                              , int skip, int maxResult, string prefix)
        {
            var mediaFolder = new MediaFolder(new Repository(repositoryName), folderName);

            return(mediaFolder.CreateQuery().WhereContains("FileName", prefix)
                   .Skip(skip)
                   .Take(maxResult)
                   .ToArray()
                   .Select(it => { it.VirtualPath = FileUrlHelper.ResolveUrl(it.VirtualPath); return it; }));
        }
示例#8
0
        public MediaContent Get(string repositoryName, string folderName, string fileName)
        {
            var mediaFolder = new MediaFolder(new Repository(repositoryName), folderName);
            var content     = mediaFolder.CreateQuery().WhereEquals("FileName", fileName)
                              .FirstOrDefault();

            if (content != null)
            {
                content.VirtualPath = FileUrlHelper.ResolveUrl(content.VirtualPath);
            }
            return(content);
        }
示例#9
0
 public virtual ActionResult IsFileNameAvailable(string name, string folderName, string uuid)
 {
     if (!string.IsNullOrEmpty(name))
     {
         var folder = new MediaFolder(Repository, folderName);
         var exists = folder.CreateQuery().WhereEquals("FileName", name).Count() != 0;
         if (exists)
         {
             return(Json("The name already exists.".Localize(), JsonRequestBehavior.AllowGet));
         }
     }
     return(Json(true, JsonRequestBehavior.AllowGet));
 }
示例#10
0
        public void SaveBytes(MediaContentParameter content)
        {
            var mediaContent = content.MediaContent;
            var mediaFolder  = new MediaFolder(new Repository(mediaContent.Repository), mediaContent.FolderName);

            mediaContent = mediaFolder.CreateQuery().WhereEquals("FileName", mediaContent.FileName)
                           .FirstOrDefault();
            using (FileStream file = new FileStream(mediaContent.PhysicalPath, FileMode.Create, System.IO.FileAccess.Write))
            {
                using (MemoryStream stream = new MemoryStream(content.FileData))
                {
                    stream.WriteTo(file);
                }
            }
        }
示例#11
0
        public byte[] GetBytes(string repositoryName, string folderName, string fileName)
        {
            var mediaFolder = new MediaFolder(new Repository(repositoryName), folderName);
            var content     = mediaFolder.CreateQuery().WhereEquals("FileName", fileName)
                              .FirstOrDefault();

            if (content == null)
            {
                return(null);
            }
            using (var fs = File.Open(content.PhysicalPath, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                return(fs.ReadData());
            }
        }
示例#12
0
        public static MediaContent ParseMediaContent(Repository repository, string virtualPath)
        {
            if (repository == null)
            {
                throw new ArgumentNullException("repository");
            }
            if (Uri.IsWellFormedUriString(virtualPath, UriKind.Absolute))
            {
                throw new NotSupportedException("Not support to parse absolute url path.".Localize());
            }
            var mediaBaseVirtualPath   = UrlUtility.Combine(new RepositoryPath(repository).VirtualPath, FolderPath.GetRootPath(typeof(MediaFolder)));
            var mediaFolderVirtualPath = UrlUtility.ResolveUrl(mediaBaseVirtualPath);

            if (virtualPath.Length > mediaFolderVirtualPath.Length)
            {
                var mediaContentPath = virtualPath.Substring(mediaBaseVirtualPath.Length - 1);
                var paths            = mediaContentPath.Split(new[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
                var mediaFolder      = new MediaFolder(repository, paths.Take(paths.Length - 1));
                var fileName         = paths.Last();
                return(mediaFolder.CreateQuery().WhereEquals("UUID", fileName).FirstOrDefault());
            }
            return(null);
        }
示例#13
0
        public void Test1()
        {
            Repository repository = new Repository("TextTranslatorTests");

            MediaFolder binaryFolder = new MediaFolder(repository, "image");

            var binaryQuery = binaryFolder.CreateQuery().WhereEquals("Title", "title1");

            Assert.AreEqual("[MediaContent] SELECT * FROM [TextTranslatorTests.image] WHERE Title = title1 ORDER  | OP:Unspecified PageSize:0 TOP:0 Skip:0 ", TextTranslator.Translate(binaryQuery));

            Schema schema = new Schema(repository, "news")
            {
                IsDummy = false
            };

            TextFolder textFolder = new TextFolder(repository, "news")
            {
                SchemaName = "news", IsDummy = false
            };

            var textQuery = textFolder.CreateQuery().WhereEquals("Title", "title1").WhereCategory(textFolder.CreateQuery());

            Assert.AreEqual("[TextContent] SELECT * FROM [TextTranslatorTests.news$news] WHERE Title = title1 Category:([TextContent] SELECT * FROM [TextTranslatorTests.news$news] WHERE  Category:() ORDER  | OP:Unspecified PageSize:0 TOP:0 Skip:0 ) ORDER  | OP:Unspecified PageSize:0 TOP:0 Skip:0 ", TextTranslator.Translate(textQuery));
        }
示例#14
0
        public virtual void Delete(Repository repository, MediaFolder mediaFolder, string uuid)
        {
            var mediaContent = mediaFolder.CreateQuery().WhereEquals("UUID", uuid).First();

            Provider.Delete(mediaContent);
        }