mirror of https://github.com/abpframework/abp.git
9 changed files with 132 additions and 1 deletions
@ -0,0 +1,18 @@ |
|||||
|
using JetBrains.Annotations; |
||||
|
using Volo.Abp.GlobalFeatures; |
||||
|
|
||||
|
namespace Volo.CmsKit.GlobalFeatures |
||||
|
{ |
||||
|
[GlobalFeatureName(Name)] |
||||
|
public class MediasFeature : GlobalFeature |
||||
|
{ |
||||
|
public const string Name = "CmsKit.Medias"; |
||||
|
|
||||
|
internal MediasFeature( |
||||
|
[NotNull] GlobalCmsKitFeatures cmsKit |
||||
|
) : base(cmsKit) |
||||
|
{ |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,19 @@ |
|||||
|
using System.IO; |
||||
|
using System.Linq; |
||||
|
|
||||
|
namespace Volo.CmsKit.Medias.Extensions |
||||
|
{ |
||||
|
public static class MediaDescriptorExtensions |
||||
|
{ |
||||
|
public static bool IsValidMediaFileName(this string name) |
||||
|
{ |
||||
|
if (string.IsNullOrWhiteSpace(name)) |
||||
|
{ |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
// "con" is not valid folder/file name for Windows OS
|
||||
|
return !(Path.GetInvalidFileNameChars().Any(name.Contains) || name == "con"); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,10 @@ |
|||||
|
using System; |
||||
|
using Volo.Abp.Domain.Repositories; |
||||
|
|
||||
|
namespace Volo.CmsKit.Medias |
||||
|
{ |
||||
|
public interface IMediaDescriptorRepository : IBasicRepository<MediaDescriptor, Guid> |
||||
|
{ |
||||
|
|
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,23 @@ |
|||||
|
using System; |
||||
|
using System.Runtime.Serialization; |
||||
|
using JetBrains.Annotations; |
||||
|
using Volo.Abp; |
||||
|
|
||||
|
namespace Volo.CmsKit.Medias |
||||
|
{ |
||||
|
[Serializable] |
||||
|
public class InvalidMediaDescriptorNameException : BusinessException |
||||
|
{ |
||||
|
public InvalidMediaDescriptorNameException([NotNull] string name) |
||||
|
{ |
||||
|
Code = CmsKitErrorCodes.MediaDescriptors.InvalidName; |
||||
|
WithData(nameof(MediaDescriptor.Name), name); |
||||
|
} |
||||
|
|
||||
|
public InvalidMediaDescriptorNameException(SerializationInfo serializationInfo, StreamingContext context) |
||||
|
: base(serializationInfo, context) |
||||
|
{ |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,10 @@ |
|||||
|
using Volo.Abp.BlobStoring; |
||||
|
|
||||
|
namespace Volo.CmsKit.Medias |
||||
|
{ |
||||
|
[BlobContainerName("cms-kit-medias")] |
||||
|
public class MediaContainer |
||||
|
{ |
||||
|
|
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,42 @@ |
|||||
|
using System; |
||||
|
using Volo.Abp.Domain.Entities.Auditing; |
||||
|
using Volo.Abp.MultiTenancy; |
||||
|
using Volo.CmsKit.Medias.Extensions; |
||||
|
|
||||
|
namespace Volo.CmsKit.Medias |
||||
|
{ |
||||
|
public class MediaDescriptor : FullAuditedAggregateRoot<Guid>, IMultiTenant |
||||
|
{ |
||||
|
public Guid? TenantId { get; protected set; } |
||||
|
|
||||
|
public string Name { get; protected set; } |
||||
|
|
||||
|
public string MimeType { get; set; } |
||||
|
|
||||
|
public int Size { get; protected set; } |
||||
|
|
||||
|
protected MediaDescriptor() |
||||
|
{ |
||||
|
|
||||
|
} |
||||
|
|
||||
|
public MediaDescriptor(Guid id, Guid? tenantId, string name, string mimeType, int size) : base(id) |
||||
|
{ |
||||
|
TenantId = tenantId; |
||||
|
MimeType = mimeType; |
||||
|
Size = size; |
||||
|
|
||||
|
SetName(name); |
||||
|
} |
||||
|
|
||||
|
public void SetName(string name) |
||||
|
{ |
||||
|
if (!name.IsValidMediaFileName()) |
||||
|
{ |
||||
|
throw new InvalidMediaDescriptorNameException(name); |
||||
|
} |
||||
|
|
||||
|
Name = name; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue