diff --git a/src/WorkFlow.Application/Dto/TfFileDto.cs b/src/WorkFlow.Application/Dto/TfFileDto.cs index dfa4ea6..f60f304 100644 --- a/src/WorkFlow.Application/Dto/TfFileDto.cs +++ b/src/WorkFlow.Application/Dto/TfFileDto.cs @@ -1,8 +1,11 @@ -namespace WorkFlow.Application.Dto; +using System.Text.Json.Serialization; +using System.Web; + +namespace WorkFlow.Application.Dto; public class TfFileDto { - public string Path { get; set; } = null!; + public UriBuilder Url { get; set; } = null!; public string? Headline { get; set; } diff --git a/src/WorkFlow.Application/MappingProfile.cs b/src/WorkFlow.Application/MappingProfile.cs index 349e1bf..d1e1e70 100644 --- a/src/WorkFlow.Application/MappingProfile.cs +++ b/src/WorkFlow.Application/MappingProfile.cs @@ -1,4 +1,5 @@ -using WorkFlow.Application.Buttons; +using System.Web; +using WorkFlow.Application.Buttons; using WorkFlow.Application.Dto; using WorkFlow.Domain.Entities; @@ -22,6 +23,18 @@ public class MappingProfile : AutoMapper.Profile CreateMap() .ForMember(dest => dest.Intl, opt => opt.MapFrom(src => src.State1 != null ? src.State1.IntlState : null)) .ForMember(dest => dest.Others, opt => opt.MapFrom(src => new string?[] { src.State2, src.State3, src.State4 })); - CreateMap(); + CreateMap() + .ForMember(dest => dest.Url, opt => opt.MapFrom(src => UriBuilder.WithPath(src.Path, true))); + } + + public static UriBuilder UriBuilder { get; set; } = new UriBuilder(); +} + +internal static class HttpUtilityExtensions +{ + public static UriBuilder WithPath(this UriBuilder builder, string path, bool encode = true) + { + builder.Path = encode ? HttpUtility.UrlEncode(path) : path; + return builder; } } \ No newline at end of file