From 0dc8b59b435f978428c73bc28e2a424bc413c562 Mon Sep 17 00:00:00 2001 From: crupest Date: Fri, 31 Jan 2020 15:21:58 +0800 Subject: Combine two user info types. --- Timeline/Models/Http/TokenController.cs | 4 +-- Timeline/Models/Http/UserInfo.cs | 45 +++++++++++++++------------------ 2 files changed, 23 insertions(+), 26 deletions(-) (limited to 'Timeline/Models') diff --git a/Timeline/Models/Http/TokenController.cs b/Timeline/Models/Http/TokenController.cs index 383b2965..ea8b59ed 100644 --- a/Timeline/Models/Http/TokenController.cs +++ b/Timeline/Models/Http/TokenController.cs @@ -16,7 +16,7 @@ namespace Timeline.Models.Http public class CreateTokenResponse { public string Token { get; set; } = default!; - public UserInfoForAdmin User { get; set; } = default!; + public UserInfo User { get; set; } = default!; } public class VerifyTokenRequest @@ -27,6 +27,6 @@ namespace Timeline.Models.Http public class VerifyTokenResponse { - public UserInfoForAdmin User { get; set; } = default!; + public UserInfo User { get; set; } = default!; } } diff --git a/Timeline/Models/Http/UserInfo.cs b/Timeline/Models/Http/UserInfo.cs index 07ac0aad..5890a7a6 100644 --- a/Timeline/Models/Http/UserInfo.cs +++ b/Timeline/Models/Http/UserInfo.cs @@ -7,54 +7,52 @@ using Timeline.Services; namespace Timeline.Models.Http { - public interface IUserInfo - { - string Username { get; set; } - string Nickname { get; set; } - string AvatarUrl { get; set; } - } - - public class UserInfo : IUserInfo + public class UserInfo { public string Username { get; set; } = default!; public string Nickname { get; set; } = default!; - public string AvatarUrl { get; set; } = default!; + public bool? Administrator { get; set; } = default!; +#pragma warning disable CA1707 + public UserInfoLinks? _links { get; set; } +#pragma warning restore CA1707 } - public class UserInfoForAdmin : IUserInfo + public class UserInfoLinks { - public string Username { get; set; } = default!; - public string Nickname { get; set; } = default!; - public string AvatarUrl { get; set; } = default!; - public bool Administrator { get; set; } + public string Avatar { get; set; } = default!; + public string Timeline { get; set; } = default!; } - public class UserInfoAvatarUrlValueResolver : IValueResolver + public class UserInfoLinksValueResolver : IValueResolver { private readonly IActionContextAccessor? _actionContextAccessor; private readonly IUrlHelperFactory? _urlHelperFactory; - public UserInfoAvatarUrlValueResolver() + public UserInfoLinksValueResolver() { _actionContextAccessor = null; _urlHelperFactory = null; } - public UserInfoAvatarUrlValueResolver(IActionContextAccessor actionContextAccessor, IUrlHelperFactory urlHelperFactory) + public UserInfoLinksValueResolver(IActionContextAccessor actionContextAccessor, IUrlHelperFactory urlHelperFactory) { _actionContextAccessor = actionContextAccessor; _urlHelperFactory = urlHelperFactory; } - public string Resolve(User source, IUserInfo destination, string destMember, ResolutionContext context) + public UserInfoLinks? Resolve(User source, UserInfo destination, UserInfoLinks? destMember, ResolutionContext context) { - if (_actionContextAccessor == null) + if (_actionContextAccessor == null || _urlHelperFactory == null) { - return $"/users/{destination.Username}/avatar"; + return null; } - var urlHelper = _urlHelperFactory!.GetUrlHelper(_actionContextAccessor.ActionContext); - return urlHelper.ActionLink(nameof(UserAvatarController.Get), nameof(UserAvatarController), new { destination.Username }); + var urlHelper = _urlHelperFactory.GetUrlHelper(_actionContextAccessor.ActionContext); + return new UserInfoLinks + { + Avatar = urlHelper.ActionLink(nameof(UserAvatarController.Get), nameof(UserAvatarController), new { destination.Username }), + Timeline = urlHelper.ActionLink(nameof(PersonalTimelineController.TimelineGet), nameof(PersonalTimelineController), new { destination.Username }) + }; } } @@ -62,8 +60,7 @@ namespace Timeline.Models.Http { public UserInfoAutoMapperProfile() { - CreateMap().ForMember(u => u.AvatarUrl, opt => opt.MapFrom()); - CreateMap().ForMember(u => u.AvatarUrl, opt => opt.MapFrom()); + CreateMap().ForMember(u => u._links, opt => opt.MapFrom()); } } } -- cgit v1.2.3