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