namespace Yes.Application.Admins.Configurations { public record GetConfigurationQuery() : IRequest; public record GetConfigurationQueryResponse( string Name, string Url, string Logo, string Keywords, string Description, string BeiAn, string Script, int PageSizeOfHomepage, int PageSizeOfListpage, string ArticleRoute, string PageRoute, string CategoryRoute, string SearchRoute, string TagRoute, StorageSettingsResponse Storage ); public record StorageSettingsResponse(string StorageType, QiniuSettingsResponse Qiniu); public record QiniuSettingsResponse(string AccessKey, string MaskedAccessKey, string SecretKey, string MaskedSecretKey, string Domain, string Bucket); public class GetConfigurationQueryHandler(IOptionsMonitor options, IMapper mapper) : IRequestHandler { private readonly BlogSettings _settings = options.CurrentValue; private readonly IMapper _mapper = mapper; public async Task Handle(GetConfigurationQuery request, CancellationToken cancellationToken) { var response = _mapper.Map(_settings); return response; } } internal class GetConfigurationMappingProfile : IRegister { public void Register(TypeAdapterConfig config) { config.ForType() .Map(dest => dest.Storage.Qiniu.MaskedAccessKey, src => string.IsNullOrEmpty(src.Storage.Qiniu.AccessKey) ? "" : "****************") .Map(dest => dest.Storage.Qiniu.MaskedSecretKey, src => string.IsNullOrEmpty(src.Storage.Qiniu.SecretKey) ? "" : "****************") .Map(dest => dest.Storage.Qiniu.AccessKey, src => "") .Map(dest => dest.Storage.Qiniu.SecretKey, src => ""); } } }