Browse Source

added image methods

pull/6996/head
Ahmet 6 years ago
parent
commit
c5fa1bd088
  1. 5
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/IPageAdminAppService.cs
  2. 1
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo.CmsKit.Admin.Application.csproj
  3. 2
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/CmsKitAdminApplicationModule.cs
  4. 26
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Pages/PageAdminAppService.cs
  5. 19
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Pages/PageAdminController.cs
  6. 10
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Pages/PageImageContainer.cs
  7. 13
      modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitTestBaseModule.cs
  8. 34
      modules/cms-kit/test/Volo.CmsKit.TestBase/FakeBlobProvider.cs
  9. 1
      modules/cms-kit/test/Volo.CmsKit.TestBase/Volo.CmsKit.TestBase.csproj

5
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/IPageAdminAppService.cs

@ -1,11 +1,16 @@
using System;
using System.Threading.Tasks;
using Volo.Abp.Application.Services;
using Volo.Abp.Content;
namespace Volo.CmsKit.Admin.Pages
{
public interface IPageAdminAppService : ICrudAppService<PageDto, PageDto, Guid, GetPagesInputDto, CreatePageInputDto, UpdatePageInputDto>
{
Task<bool> ExistsAsync(string url);
Task SetImageAsync(Guid id, RemoteStreamContent content);
Task<RemoteStreamContent> GetImageAsync(Guid id);
}
}

1
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo.CmsKit.Admin.Application.csproj

@ -11,6 +11,7 @@
<ItemGroup>
<ProjectReference Include="..\Volo.CmsKit.Admin.Application.Contracts\Volo.CmsKit.Admin.Application.Contracts.csproj" />
<ProjectReference Include="..\Volo.CmsKit.Common.Application\Volo.CmsKit.Common.Application.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.BlobStoring\Volo.Abp.BlobStoring.csproj" />
</ItemGroup>
</Project>

2
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/CmsKitAdminApplicationModule.cs

@ -1,5 +1,6 @@
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.AutoMapper;
using Volo.Abp.BlobStoring;
using Volo.Abp.Modularity;
namespace Volo.CmsKit.Admin
@ -7,6 +8,7 @@ namespace Volo.CmsKit.Admin
[DependsOn(
typeof(CmsKitAdminApplicationContractsModule),
typeof(AbpAutoMapperModule),
typeof(AbpBlobStoringModule),
typeof(CmsKitCommonApplicationModule)
)]
public class CmsKitAdminApplicationModule : AbpModule

26
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Pages/PageAdminAppService.cs

@ -5,6 +5,8 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.BlobStoring;
using Volo.Abp.Content;
using Volo.Abp.GlobalFeatures;
using Volo.CmsKit.Contents;
using Volo.CmsKit.GlobalFeatures;
@ -20,10 +22,16 @@ namespace Volo.CmsKit.Admin.Pages
protected readonly IPageRepository PageRepository;
protected readonly IContentRepository ContentRepository;
public PageAdminAppService(IPageRepository pageRepository, IContentRepository contentRepository)
protected readonly IBlobContainer<PageImageContainer> BlobContainer;
public PageAdminAppService(
IPageRepository pageRepository,
IContentRepository contentRepository,
IBlobContainer<PageImageContainer> blobContainer)
{
PageRepository = pageRepository;
ContentRepository = contentRepository;
BlobContainer = blobContainer;
}
public virtual async Task<PageDto> GetAsync(Guid id)
@ -36,6 +44,7 @@ namespace Volo.CmsKit.Admin.Pages
public virtual async Task<PagedResultDto<PageDto>> GetListAsync(GetPagesInputDto input)
{
var count = await PageRepository.GetCountAsync(input.Filter);
var pages = await PageRepository.GetListAsync(
input.Filter,
input.MaxResultCount,
@ -100,6 +109,21 @@ namespace Volo.CmsKit.Admin.Pages
return PageRepository.ExistsAsync(url);
}
[Authorize(CmsKitAdminPermissions.Pages.Update)]
public virtual async Task SetImageAsync(Guid id, RemoteStreamContent content)
{
var page = await PageRepository.GetAsync(id);
await BlobContainer.SaveAsync(page.Id.ToString(), content.GetStream());
}
public virtual async Task<RemoteStreamContent> GetImageAsync(Guid id)
{
var blobStream = await BlobContainer.GetAsync(id.ToString());
return new RemoteStreamContent(blobStream);
}
[Authorize(CmsKitAdminPermissions.Pages.Delete)]
public virtual async Task DeleteAsync(Guid id)
{

19
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Pages/PageAdminController.cs

@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Content;
using Volo.Abp.GlobalFeatures;
using Volo.CmsKit.GlobalFeatures;
using Volo.CmsKit.Permissions;
@ -66,5 +67,23 @@ namespace Volo.CmsKit.Admin.Pages
{
return PageAdminAppService.ExistsAsync(url);
}
[HttpPost]
[Route("set-image/{id}")]
public virtual Task SetImageAsync(Guid id, [FromBody]RemoteStreamContent content)
{
return PageAdminAppService.SetImageAsync(id, content);
}
[HttpGet]
[Route("image/{id}")]
public virtual Task<RemoteStreamContent> GetImageAsync(Guid id)
{
Response.Headers.Add("Content-Disposition", "inline;");
Response.Headers.Add("Accept-Ranges", "bytes");
Response.ContentType = "image/xyz";
return PageAdminAppService.GetImageAsync(id);
}
}
}

10
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Pages/PageImageContainer.cs

@ -0,0 +1,10 @@
using Volo.Abp.BlobStoring;
namespace Volo.CmsKit.Pages
{
[BlobContainerName("cms-kit-page-image")]
public class PageImageContainer
{
}
}

13
modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitTestBaseModule.cs

@ -1,11 +1,14 @@
using Microsoft.Extensions.DependencyInjection;
using NSubstitute;
using Volo.Abp;
using Volo.Abp.Authorization;
using Volo.Abp.Autofac;
using Volo.Abp.BlobStoring;
using Volo.Abp.Data;
using Volo.Abp.GlobalFeatures;
using Volo.Abp.Modularity;
using Volo.Abp.Threading;
using Volo.FileManagement;
namespace Volo.CmsKit
{
@ -26,6 +29,16 @@ namespace Volo.CmsKit
GlobalFeatureManager.Instance.Modules.CmsKit().EnableAll();
});
context.Services.AddSingleton<IBlobProvider>(Substitute.For<FakeBlobProvider>());
Configure<AbpBlobStoringOptions>(options =>
{
options.Containers.ConfigureAll((containerName, containerConfiguration) =>
{
containerConfiguration.ProviderType = typeof(FakeBlobProvider);
});
});
context.Services.AddAlwaysAllowAuthorization();
}

34
modules/cms-kit/test/Volo.CmsKit.TestBase/FakeBlobProvider.cs

@ -0,0 +1,34 @@
using System.IO;
using System.Threading.Tasks;
using Volo.Abp.BlobStoring;
namespace Volo.FileManagement
{
public class FakeBlobProvider : IBlobProvider
{
public virtual Task SaveAsync(BlobProviderSaveArgs args)
{
throw new System.NotImplementedException();
}
public virtual Task<bool> DeleteAsync(BlobProviderDeleteArgs args)
{
throw new System.NotImplementedException();
}
public virtual Task<bool> ExistsAsync(BlobProviderExistsArgs args)
{
throw new System.NotImplementedException();
}
public virtual Task<Stream> GetAsync(BlobProviderGetArgs args)
{
throw new System.NotImplementedException();
}
public virtual Task<Stream> GetOrNullAsync(BlobProviderGetArgs args)
{
throw new System.NotImplementedException();
}
}
}

1
modules/cms-kit/test/Volo.CmsKit.TestBase/Volo.CmsKit.TestBase.csproj

@ -15,6 +15,7 @@
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.TestBase\Volo.Abp.TestBase.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.Authorization\Volo.Abp.Authorization.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.Autofac\Volo.Abp.Autofac.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.BlobStoring\Volo.Abp.BlobStoring.csproj" />
<ProjectReference Include="..\..\src\Volo.CmsKit.Domain\Volo.CmsKit.Domain.csproj" />
</ItemGroup>

Loading…
Cancel
Save