From 8833b4eb1e65dda51abd24b453b86531b3f5f7a8 Mon Sep 17 00:00:00 2001 From: crupest Date: Fri, 13 Mar 2020 17:05:03 +0800 Subject: Abstract out data cache helper. --- Timeline/Controllers/UserAvatarController.cs | 31 ++++------------------------ 1 file changed, 4 insertions(+), 27 deletions(-) (limited to 'Timeline/Controllers/UserAvatarController.cs') diff --git a/Timeline/Controllers/UserAvatarController.cs b/Timeline/Controllers/UserAvatarController.cs index f4f3db3e..f78dcb08 100644 --- a/Timeline/Controllers/UserAvatarController.cs +++ b/Timeline/Controllers/UserAvatarController.cs @@ -46,34 +46,11 @@ namespace Timeline.Controllers return NotFound(ErrorResponse.UserCommon.NotExist()); } - const string IfNonMatchHeaderKey = "If-None-Match"; - - var eTagValue = $"\"{await _service.GetAvatarETag(id)}\""; - var eTag = new EntityTagHeaderValue(eTagValue); - - if (Request.Headers.TryGetValue(IfNonMatchHeaderKey, out var value)) + return await DataCacheHelper.GenerateActionResult(this, () => _service.GetAvatarETag(id), async () => { - if (!EntityTagHeaderValue.TryParseStrictList(value, out var eTagList)) - { - _logger.LogInformation(Log.Format(LogGetBadIfNoneMatch, - ("Username", username), ("If-None-Match", value))); - return BadRequest(ErrorResponse.Common.Header.IfNonMatch_BadFormat()); - } - - if (eTagList.FirstOrDefault(e => e.Equals(eTag)) != null) - { - Response.Headers.Add("ETag", eTagValue); - _logger.LogInformation(Log.Format(LogGetReturnNotModify, ("Username", username))); - return StatusCode(StatusCodes.Status304NotModified); - } - } - - var avatarInfo = await _service.GetAvatar(id); - var avatar = avatarInfo.Avatar; - - _logger.LogInformation(Log.Format(LogGetReturnData, ("Username", username))); - return File(avatar.Data, avatar.Type, new DateTimeOffset(avatarInfo.LastModified), eTag); - + var avatar = await _service.GetAvatar(id); + return avatar.ToCacheableData(); + }); } [HttpPut("users/{username}/avatar")] -- cgit v1.2.3