diff options
Diffstat (limited to 'Timeline/Controllers')
-rw-r--r-- | Timeline/Controllers/UserAvatarController.cs | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/Timeline/Controllers/UserAvatarController.cs b/Timeline/Controllers/UserAvatarController.cs index 710ca764..89d2650c 100644 --- a/Timeline/Controllers/UserAvatarController.cs +++ b/Timeline/Controllers/UserAvatarController.cs @@ -57,10 +57,22 @@ namespace Timeline.Controllers [Authorize]
public async Task<IActionResult> Get(string username)
{
+ const string IfModifiedSinceHeaderKey = "If-Modified-Since";
try
{
- var avatar = await _service.GetAvatar(username);
- return File(avatar.Data, avatar.Type);
+ var avatarInfo = await _service.GetAvatar(username);
+ var avatar = avatarInfo.Avatar;
+ if (Request.Headers.TryGetValue(IfModifiedSinceHeaderKey, out var value))
+ {
+ var t = DateTime.Parse(value);
+ if (t > avatarInfo.LastModified)
+ {
+ Response.Headers.Add(IfModifiedSinceHeaderKey, avatarInfo.LastModified.ToString("r"));
+ return StatusCode(StatusCodes.Status304NotModified);
+ }
+ }
+
+ return File(avatar.Data, avatar.Type, new DateTimeOffset(avatarInfo.LastModified), null);
}
catch (UserNotExistException e)
{
|