diff --git a/src/Blogifier.Admin/Blogifier.Admin.csproj b/src/Blogifier.Admin/Blogifier.Admin.csproj index e89e12a05..13d58480c 100644 --- a/src/Blogifier.Admin/Blogifier.Admin.csproj +++ b/src/Blogifier.Admin/Blogifier.Admin.csproj @@ -11,13 +11,9 @@ - - - - - + diff --git a/src/Blogifier.Admin/Components/PostEditorComponent.razor b/src/Blogifier.Admin/Components/PostEditorComponent.razor index 50176482f..186123e12 100644 --- a/src/Blogifier.Admin/Components/PostEditorComponent.razor +++ b/src/Blogifier.Admin/Components/PostEditorComponent.razor @@ -2,7 +2,6 @@ @inject IJSRuntime _jsruntime @inject NavigationManager _navigation @inject IToaster _toaster -@inject IMapper _mapper
@@ -79,13 +78,13 @@ @code { - [Parameter] public PostEditorDto Post { get; set; } = default!; + [Parameter] public FrontPostEditorDto Post { get; set; } = default!; [Parameter] public EventCallback OnSaveCallback { get; set; } [Parameter] public EventCallback OnRemoveCallback { get; set; } private EditorComponent _editorComponent = default!; - public async Task SetPostInfoAsync(PostEditorDto post) + public async Task SetPostInfoAsync(FrontPostEditorDto post) { var headTitle = _localizer["edit"] + " - " + post.Title; await _jsruntime.InvokeVoidAsync("commonJsFunctions.setTitle", headTitle); @@ -106,10 +105,8 @@ if (string.IsNullOrEmpty(Post.Cover)) Post.Cover = BlogifierSharedConstant.DefaultCover; if (string.IsNullOrEmpty(Post.Description)) Post.Description = Post.Title; Post.State = postState; - - var post = _mapper.Map(Post); - post.Files = frontFiles; - await OnSaveCallback.InvokeAsync(post); + Post.Files = frontFiles; + await OnSaveCallback.InvokeAsync(Post); } protected async Task SaveAsync() diff --git a/src/Blogifier.Admin/Pages/Blogs/BlogsView.razor b/src/Blogifier.Admin/Pages/Blogs/BlogsView.razor index c5eb0e836..e143b158b 100644 --- a/src/Blogifier.Admin/Pages/Blogs/BlogsView.razor +++ b/src/Blogifier.Admin/Pages/Blogs/BlogsView.razor @@ -3,7 +3,6 @@ @layout BlogsLayout @inject HttpClient _http -@inject IMapper _mapper @inject NavigationManager _navigation @inject IStringLocalizer _localizer @inject IJSRuntime _jsruntime @@ -22,8 +21,8 @@ protected async Task LoadAsync() { - var result = await _http.GetFromJsonAsync>($"api/post/items/{(int)FilterValue}/{(int)PostType.Post}"); - Posts = _mapper.Map>(result); + var result = await _http.GetFromJsonAsync>($"api/post/items/{(int)FilterValue}/{(int)PostType.Post}"); + Posts = result!; } public void CheckAll(object? checkValue) @@ -77,8 +76,8 @@ protected async Task SearchPosts() { if (string.IsNullOrEmpty(SearchTerm)) SearchTerm = "*"; - var result = await _http.GetFromJsonAsync>($"api/post/items/search/{SearchTerm}"); - Posts = _mapper.Map>(result); + var result = await _http.GetFromJsonAsync>($"api/post/items/search/{SearchTerm}"); + Posts = result; } public async Task Filter(PublishedStatus filter) diff --git a/src/Blogifier.Admin/Pages/Blogs/CategoryEditorView.razor b/src/Blogifier.Admin/Pages/Blogs/CategoryEditorView.razor index 032f65a90..2f6038132 100644 --- a/src/Blogifier.Admin/Pages/Blogs/CategoryEditorView.razor +++ b/src/Blogifier.Admin/Pages/Blogs/CategoryEditorView.razor @@ -3,7 +3,6 @@ @layout BlogsLayout @inject HttpClient _http -@inject IMapper _mapper @inject NavigationManager _navigation @inject IStringLocalizer _localizer @inject IJSRuntime _jsruntime diff --git a/src/Blogifier.Admin/Pages/Blogs/CategoryView.razor b/src/Blogifier.Admin/Pages/Blogs/CategoryView.razor index c1111b43f..823c96085 100644 --- a/src/Blogifier.Admin/Pages/Blogs/CategoryView.razor +++ b/src/Blogifier.Admin/Pages/Blogs/CategoryView.razor @@ -3,7 +3,6 @@ @layout BlogsLayout @inject HttpClient _http -@inject IMapper _mapper @inject NavigationManager _navigation @inject IStringLocalizer _localizer @inject IJSRuntime _jsruntime @@ -22,8 +21,8 @@ protected async Task LoadAsync() { - var result = await _http.GetFromJsonAsync>($"api/category/items"); - Categories = _mapper.Map>(result); + var result = await _http.GetFromJsonAsync>($"api/category/items"); + Categories = result; } protected void CheckAll(object? checkValue) diff --git a/src/Blogifier.Admin/Pages/Blogs/EditorView.razor b/src/Blogifier.Admin/Pages/Blogs/EditorView.razor index 7bf918527..1764e771e 100644 --- a/src/Blogifier.Admin/Pages/Blogs/EditorView.razor +++ b/src/Blogifier.Admin/Pages/Blogs/EditorView.razor @@ -5,7 +5,6 @@ @inject NavigationManager _navigation @inject IToaster _toaster @inject ToasterService _toasterService -@inject IMapper _mapper @@ -16,7 +15,7 @@ private PostEditorComponent _postEditorComponent = default!; - protected PostEditorDto Post { get; set; } = new PostEditorDto + protected FrontPostEditorDto Post { get; set; } = new FrontPostEditorDto { Title = string.Empty, Description = string.Empty, @@ -31,16 +30,14 @@ { if (!string.IsNullOrEmpty(Slug)) { - Post = (await _httpClient.GetFromJsonAsync($"api/post/byslug/{Slug}"))!; + Post = (await _httpClient.GetFromJsonAsync($"api/post/byslug/{Slug}"))!; if (Post.Categories == null) Post.Categories = new List(); await _postEditorComponent.SetPostInfoAsync(Post); } } - protected async Task OnSaveAsync(FrontPostEditorDto input) + protected async Task OnSaveAsync(FrontPostEditorDto post) { - var post = _mapper.Map(input); - if (post.Id == 0) { var response = await _httpClient.PostAsJsonAsync($"api/post/add", post); diff --git a/src/Blogifier.Admin/Pages/Blogs/ImportView.razor b/src/Blogifier.Admin/Pages/Blogs/ImportView.razor index a0cba2b0a..a87c942e3 100644 --- a/src/Blogifier.Admin/Pages/Blogs/ImportView.razor +++ b/src/Blogifier.Admin/Pages/Blogs/ImportView.razor @@ -4,7 +4,6 @@ @inject IStringLocalizer _localizer @inject IToaster _toaster @inject IJSRuntime _jsRuntime -@inject IMapper _mapper @@ -98,9 +97,8 @@ else protected async Task OnAnalysis() { Status = null; - var result = await _http.GetFromJsonAsync($"api/import/rss?feedUrl={ImportRss.FeedUrl}"); - var front = _mapper.Map(result); - Import = front; + var result = await _http.GetFromJsonAsync($"api/import/rss?feedUrl={ImportRss.FeedUrl}"); + Import = result; } protected async Task OnImport() @@ -109,8 +107,7 @@ else foreach (var post in Import!.Posts!) { if (!post.Selected) continue; - var inputPost = _mapper.Map(post); - request.Posts.Add(inputPost); + request.Posts.Add(post); } if (!request.Posts.Any()) return; diff --git a/src/Blogifier.Admin/Pages/HomeView.razor b/src/Blogifier.Admin/Pages/HomeView.razor index 6eb030280..d1e9260d4 100644 --- a/src/Blogifier.Admin/Pages/HomeView.razor +++ b/src/Blogifier.Admin/Pages/HomeView.razor @@ -1,9 +1,10 @@ -@using ChartJs.Blazor +@*@using ChartJs.Blazor @using ChartJs.Blazor.Common @using ChartJs.Blazor.Common.Enums @using ChartJs.Blazor.Util @using ChartJs.Blazor.BarChart @using System.Drawing +*@ @page "/admin" @@ -13,7 +14,7 @@ @code { - protected BarConfig _config = default!; + //protected BarConfig _config = default!; protected List _dateOptions = default!; protected List _visits = default!; protected bool _hideGraph = false; @@ -22,17 +23,17 @@ protected override async Task OnInitializedAsync() { - _config = new BarConfig - { - Options = new BarOptions - { - Responsive = true, - Legend = new Legend - { - Position = Position.Top - } - } - }; + //_config = new BarConfig + //{ + // Options = new BarOptions + // { + // Responsive = true, + // Legend = new Legend + // { + // Position = Position.Top + // } + // } + //}; _dateOptions = new List { new OptionItem { Id = 1, Title = _localizer["today"] }, @@ -41,58 +42,58 @@ new OptionItem { Id = 4, Title = _localizer["30-days"] }, new OptionItem { Id = 5, Title = _localizer["90-days"] }, }; - Load(); + //Load(); _analytics = await _http.GetFromJsonAsync("api/analytics"); } - protected void Load() - { - var dataset = new BarDataset() - { - Label = "Latest Post Views", - BackgroundColor = ColorUtil.FromDrawingColor(Color.FromArgb(98, 42, 255)), - BorderWidth = 0 - }; - - if (_analytics == null || _analytics.LatestPostViews == null) - { - LoadData(dataset, TestData()); - } - else - { - _hideList = _analytics.DisplayType == AnalyticsListType.Graph; - _hideGraph = _analytics.DisplayType == AnalyticsListType.List; - - LoadData(dataset, _analytics.LatestPostViews); - } - - if (_config.Data.Datasets.Count > 0) - { - _config.Data.Datasets.Clear(); - } - - _config.Data.Datasets.Add(dataset); - } - - - - protected void LoadData(IDataset dataset, BarChartModel model) - { - _visits = new List(); - var labels = model.Labels.ToList(); - var values = model.Data.ToList(); - - _config.Data.Labels.Clear(); - - for (int i = 0; i < labels.Count; i++) - { - _config.Data.Labels.Add(labels[i]); - dataset.Add(values[i]); - - _visits.Add(new PostVisit { Name = labels[i], Value = values[i] }); - } - _visits = _visits.OrderByDescending(v => v.Value).ToList(); - } + //protected void Load() + //{ + // var dataset = new BarDataset() + // { + // Label = "Latest Post Views", + // BackgroundColor = ColorUtil.FromDrawingColor(Color.FromArgb(98, 42, 255)), + // BorderWidth = 0 + // }; + + // if (_analytics == null || _analytics.LatestPostViews == null) + // { + // LoadData(dataset, TestData()); + // } + // else + // { + // _hideList = _analytics.DisplayType == AnalyticsListType.Graph; + // _hideGraph = _analytics.DisplayType == AnalyticsListType.List; + + // LoadData(dataset, _analytics.LatestPostViews); + // } + + // if (_config.Data.Datasets.Count > 0) + // { + // _config.Data.Datasets.Clear(); + // } + + // _config.Data.Datasets.Add(dataset); + //} + + + + //protected void LoadData(IDataset dataset, BarChartModel model) + //{ + // _visits = new List(); + // var labels = model.Labels.ToList(); + // var values = model.Data.ToList(); + + // //_config.Data.Labels.Clear(); + + // for (int i = 0; i < labels.Count; i++) + // { + // _config.Data.Labels.Add(labels[i]); + // dataset.Add(values[i]); + + // _visits.Add(new PostVisit { Name = labels[i], Value = values[i] }); + // } + // _visits = _visits.OrderByDescending(v => v.Value).ToList(); + //} protected async Task ToggleAnalyticsView(bool isGraph) { diff --git a/src/Blogifier.Admin/Pages/Pages/EditorView.razor b/src/Blogifier.Admin/Pages/Pages/EditorView.razor index 8c68a72fe..38ebc0504 100644 --- a/src/Blogifier.Admin/Pages/Pages/EditorView.razor +++ b/src/Blogifier.Admin/Pages/Pages/EditorView.razor @@ -14,7 +14,7 @@ [Parameter] public string? Slug { get; set; } - protected PostEditorDto Post { get; set; } = new PostEditorDto + protected FrontPostEditorDto Post { get; set; } = new FrontPostEditorDto { Title = string.Empty, Description = string.Empty, @@ -28,7 +28,7 @@ { if (!string.IsNullOrEmpty(Slug)) { - Post = (await _httpClient.GetFromJsonAsync($"api/post/byslug/{Slug}"))!; + Post = (await _httpClient.GetFromJsonAsync($"api/post/byslug/{Slug}"))!; if (Post.Categories == null) Post.Categories = new List(); } } diff --git a/src/Blogifier.Admin/Pages/Pages/PagesView.razor b/src/Blogifier.Admin/Pages/Pages/PagesView.razor index b6ba5fb53..3121dbfc6 100644 --- a/src/Blogifier.Admin/Pages/Pages/PagesView.razor +++ b/src/Blogifier.Admin/Pages/Pages/PagesView.razor @@ -1,7 +1,6 @@ @page "/admin/pages/" @inject HttpClient _http -@inject IMapper _mapper @inject NavigationManager _navigation @inject IStringLocalizer _localizer @inject IJSRuntime _jsruntime @@ -21,8 +20,8 @@ protected async Task LoadAsync() { - var result = await _http.GetFromJsonAsync>($"api/post/items/{(int)FilterValue}/{(int)PostType.Page}"); - Posts = _mapper.Map>(result); + var result = await _http.GetFromJsonAsync>($"api/post/items/{(int)FilterValue}/{(int)PostType.Page}"); + Posts = result; } public void CheckAll(object? checkValue) @@ -78,8 +77,8 @@ protected async Task SearchPosts() { if (string.IsNullOrEmpty(SearchTerm)) SearchTerm = "*"; - var result = await _http.GetFromJsonAsync>($"api/post/items/search/{SearchTerm}"); - Posts = _mapper.Map>(result); + var result = await _http.GetFromJsonAsync>($"api/post/items/search/{SearchTerm}"); + Posts = result; } public async Task Filter(PublishedStatus filter) diff --git a/src/Blogifier.Admin/Pages/Settings/Users/EditorView.razor b/src/Blogifier.Admin/Pages/Settings/Users/EditorView.razor index d7b4fc7ed..09aec7327 100644 --- a/src/Blogifier.Admin/Pages/Settings/Users/EditorView.razor +++ b/src/Blogifier.Admin/Pages/Settings/Users/EditorView.razor @@ -5,7 +5,6 @@ @inject HttpClient _http @inject NavigationManager _navigation @inject IStringLocalizer _localizer -@inject IMapper _mapper @inject IToaster _toaster @if (!IsUpdate) @@ -85,8 +84,8 @@ else { if (!string.IsNullOrEmpty(Id)) { - var result = await _http.GetFromJsonAsync($"api/user/{Id}"); - User = _mapper.Map(result); + var result = await _http.GetFromJsonAsync($"api/user/{Id}"); + User = result!; IsUpdate = true; } } diff --git a/src/Blogifier.Admin/Pages/Settings/Users/UsersView.razor b/src/Blogifier.Admin/Pages/Settings/Users/UsersView.razor index 1ac481937..c65b04378 100644 --- a/src/Blogifier.Admin/Pages/Settings/Users/UsersView.razor +++ b/src/Blogifier.Admin/Pages/Settings/Users/UsersView.razor @@ -6,7 +6,6 @@ @inject HttpClient _http @inject NavigationManager _navigation @inject IStringLocalizer _localizer -@inject IMapper _mapper @inject IToaster _toaster @@ -96,8 +95,8 @@ protected async Task LoadAsync() { - var result = await _http.GetFromJsonAsync>("api/user/items"); - Users = _mapper.Map>(result); + var result = await _http.GetFromJsonAsync>("api/user/items"); + Users = result; } diff --git a/src/Blogifier.Admin/Profiles/CategoryItemProfile.cs b/src/Blogifier.Admin/Profiles/CategoryItemProfile.cs deleted file mode 100644 index 8c0f7fbfe..000000000 --- a/src/Blogifier.Admin/Profiles/CategoryItemProfile.cs +++ /dev/null @@ -1,12 +0,0 @@ -using AutoMapper; -using Blogifier.Shared; - -namespace Blogifier.Admin.Profiles; - -public class CategoryItemProfile : Profile -{ - public CategoryItemProfile() - { - CreateMap().ReverseMap(); - } -} diff --git a/src/Blogifier.Admin/Profiles/FrontPostItemProfile.cs b/src/Blogifier.Admin/Profiles/FrontPostItemProfile.cs deleted file mode 100644 index 1f4461e25..000000000 --- a/src/Blogifier.Admin/Profiles/FrontPostItemProfile.cs +++ /dev/null @@ -1,12 +0,0 @@ -using AutoMapper; -using Blogifier.Shared; - -namespace Blogifier.Admin.Profiles; - -public class FrontPostItemProfile : Profile -{ - public FrontPostItemProfile() - { - CreateMap(); - } -} diff --git a/src/Blogifier.Admin/Profiles/ImportProfile.cs b/src/Blogifier.Admin/Profiles/ImportProfile.cs deleted file mode 100644 index 6b5631e80..000000000 --- a/src/Blogifier.Admin/Profiles/ImportProfile.cs +++ /dev/null @@ -1,12 +0,0 @@ -using AutoMapper; -using Blogifier.Shared; - -namespace Blogifier.Admin.Profiles; - -public class ImportProfile : Profile -{ - public ImportProfile() - { - CreateMap().ReverseMap(); - } -} diff --git a/src/Blogifier.Admin/Profiles/PostEditorProfile.cs b/src/Blogifier.Admin/Profiles/PostEditorProfile.cs deleted file mode 100644 index 084342fb6..000000000 --- a/src/Blogifier.Admin/Profiles/PostEditorProfile.cs +++ /dev/null @@ -1,13 +0,0 @@ -using AutoMapper; -using Blogifier.Shared; - -namespace Blogifier.Admin.Profiles; - -public class PostEditorProfile : Profile -{ - public PostEditorProfile() - { - CreateMap().ReverseMap(); - CreateMap().ReverseMap(); - } -} diff --git a/src/Blogifier.Admin/Profiles/UserProfile.cs b/src/Blogifier.Admin/Profiles/UserProfile.cs deleted file mode 100644 index c35572d89..000000000 --- a/src/Blogifier.Admin/Profiles/UserProfile.cs +++ /dev/null @@ -1,13 +0,0 @@ -using AutoMapper; -using Blogifier.Shared; - -namespace Blogifier.Admin.Profiles; - -public class UserProfile : Profile -{ - public UserProfile() - { - CreateMap().ReverseMap(); - CreateMap(); - } -} diff --git a/src/Blogifier.Admin/Program.cs b/src/Blogifier.Admin/Program.cs index 808c1b00b..1f2d30da2 100644 --- a/src/Blogifier.Admin/Program.cs +++ b/src/Blogifier.Admin/Program.cs @@ -11,7 +11,6 @@ var builder = WebAssemblyHostBuilder.CreateDefault(args); builder.RootComponents.Add("#app"); -builder.Services.AddAutoMapper(typeof(Program)); builder.Services.AddLocalization(); builder.Services.AddOptions(); diff --git a/src/Blogifier.Admin/_Imports.razor b/src/Blogifier.Admin/_Imports.razor index d57b9c6aa..f47b8369b 100644 --- a/src/Blogifier.Admin/_Imports.razor +++ b/src/Blogifier.Admin/_Imports.razor @@ -12,9 +12,6 @@ @using Microsoft.Extensions.Localization @using Microsoft.Extensions.Logging -@using AutoMapper; - -@using Blazored.Typeahead @using Sotsera.Blazor.Toaster @using Blogifier; diff --git a/src/Blogifier.Admin/wwwroot/index.html b/src/Blogifier.Admin/wwwroot/index.html index 03d58d1a6..628017365 100644 --- a/src/Blogifier.Admin/wwwroot/index.html +++ b/src/Blogifier.Admin/wwwroot/index.html @@ -10,7 +10,6 @@ TODO: for rtl: --> - @@ -55,8 +54,6 @@ - - diff --git a/src/Blogifier/BlogifierConfigure.cs b/src/Blogifier/BlogifierConfigure.cs deleted file mode 100644 index 44d3a261c..000000000 --- a/src/Blogifier/BlogifierConfigure.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Blogifier; - -public class BlogifierConfigure -{ - public string? FileExtensions { get; set; } -} diff --git a/src/Blogifier/BlogifierConstant.cs b/src/Blogifier/BlogifierConstant.cs index 7e9812102..8256d00d9 100644 --- a/src/Blogifier/BlogifierConstant.cs +++ b/src/Blogifier/BlogifierConstant.cs @@ -28,7 +28,7 @@ public static class BlogifierConstant public const string StorageLocalPhysicalRoot = "/data"; public const string StorageRowPhysicalRoot = "/row"; - public static readonly List FileExtensions = new() + public static readonly string[] FileExtensions = new string[] { "png", "gif", "jpeg", "jpg", "zip", "7z", "pdf", "doc", "docx", "xls", "xlsx", "mp3", "mp4", "avi" }; #region NotUse diff --git a/src/Blogifier/Caches/CacheExtensions.cs b/src/Blogifier/Caches/CacheExtensions.cs index 6fc7c6315..f687567f7 100644 --- a/src/Blogifier/Caches/CacheExtensions.cs +++ b/src/Blogifier/Caches/CacheExtensions.cs @@ -15,7 +15,7 @@ public static IServiceCollection AddCache(this IServiceCollection services, IWeb if (string.IsNullOrEmpty(redisConnectionString)) { services.AddDistributedMemoryCache(); - var dataProtectionPath = $"{environment.ContentRootPath}\\App_Data\\DataProtection-Keys\\"; + var dataProtectionPath = Path.Combine(environment.ContentRootPath, "App_Data", "DataProtection-Keys"); var dataProtectionDirectory = new DirectoryInfo(dataProtectionPath); services.AddDataProtection().PersistKeysToFileSystem(dataProtectionDirectory); } diff --git a/src/Blogifier/Program.cs b/src/Blogifier/Program.cs index 46d58ce95..f035ce239 100644 --- a/src/Blogifier/Program.cs +++ b/src/Blogifier/Program.cs @@ -16,17 +16,19 @@ using Serilog; using System; + +var builderMigrations = WebApplication.CreateBuilder(args); +builderMigrations.Host.UseSerilog((context, builder) => + builder.ReadFrom.Configuration(context.Configuration).Enrich.FromLogContext()); +builderMigrations.Services.AddDbContext(builderMigrations.Environment, builderMigrations.Configuration); +var appMigrations = builderMigrations.Build(); +await appMigrations.RunDbContextMigrateAsync(); +await appMigrations.DisposeAsync(); + var builder = WebApplication.CreateBuilder(args); builder.Host.UseSerilog((context, builder) => -{ - builder.ReadFrom - .Configuration(context.Configuration) - .Enrich - .FromLogContext(); -}); - -builder.Services.Configure(builder.Configuration.GetSection(BlogifierConstant.Key)); + builder.ReadFrom.Configuration(context.Configuration).Enrich.FromLogContext()); builder.Services.AddHttpClient(); builder.Services.AddLocalization(); @@ -90,8 +92,6 @@ var app = builder.Build(); -await app.RunDbContextMigrateAsync(); - app.UseSerilogRequestLogging(); if (app.Environment.IsDevelopment()) diff --git a/src/Blogifier/Storages/StorageManager.cs b/src/Blogifier/Storages/StorageManager.cs index 3a9be27b1..57a199f28 100644 --- a/src/Blogifier/Storages/StorageManager.cs +++ b/src/Blogifier/Storages/StorageManager.cs @@ -2,8 +2,10 @@ using Blogifier.Helper; using Blogifier.Shared; using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; +using Microsoft.IdentityModel.Tokens; using System; using System.Collections.Generic; using System.Linq; @@ -19,19 +21,25 @@ public class StorageManager { private readonly ILogger _logger; private readonly IHttpClientFactory _httpClientFactory; - private readonly BlogifierConfigure _blogifierConfigure; private readonly IStorageProvider _storageProvider; + private readonly string[]? _fileExtensions; public StorageManager( ILogger logger, IHttpClientFactory httpClientFactory, - IOptions blogifierConfigure, - IStorageProvider storageProvider) + IStorageProvider storageProvider, + IConfiguration configuration) { _logger = logger; _httpClientFactory = httpClientFactory; - _blogifierConfigure = blogifierConfigure.Value; _storageProvider = storageProvider; + + var fileExtensionsString = configuration[$"{BlogifierConstant.Key}:FileExtensions"]; + if (!string.IsNullOrEmpty(fileExtensionsString)) + { + _fileExtensions = fileExtensionsString.Split(',')!; + } + } public async Task UploadAsync(DateTime uploadAt, int userid, Uri baseAddress, string url, string? fileName = null) @@ -138,10 +146,7 @@ public async Task UploadFilesFoHtml(DateTime uploadAt, int userid, Uri b private bool InvalidFileName(string fileName) { - var fileExtensions = BlogifierConstant.FileExtensions; - var configFileExtensions = _blogifierConfigure.FileExtensions; - if (!string.IsNullOrEmpty(configFileExtensions)) - fileExtensions = new List(configFileExtensions.Split(',')); + var fileExtensions = _fileExtensions ?? BlogifierConstant.FileExtensions; return fileExtensions.Any(fileName.EndsWith); }