From 647006822f01a53dade5ea040210059a98a43196 Mon Sep 17 00:00:00 2001 From: 杨宇千 Date: Sun, 18 Aug 2019 19:15:44 +0800 Subject: Add avatar controller. --- Timeline/Controllers/UserAvatarController.cs | 70 ++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 Timeline/Controllers/UserAvatarController.cs (limited to 'Timeline/Controllers/UserAvatarController.cs') diff --git a/Timeline/Controllers/UserAvatarController.cs b/Timeline/Controllers/UserAvatarController.cs new file mode 100644 index 00000000..f61fd54a --- /dev/null +++ b/Timeline/Controllers/UserAvatarController.cs @@ -0,0 +1,70 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using System; +using System.Threading.Tasks; +using Timeline.Models.Http; +using Timeline.Services; + +namespace Timeline.Controllers +{ + [ApiController] + public class UserAvatarController : Controller + { + public static class ErrorCodes + { + public const int Get_UserNotExist = -1001; + + public const int Put_UserNotExist = -2001; + } + + private readonly ILogger _logger; + + private readonly IUserAvatarService _service; + + public UserAvatarController(ILogger logger, IUserAvatarService service) + { + _logger = logger; + _service = service; + } + + [HttpGet("users/{username}/avatar")] + public async Task Get(string username) + { + try + { + var avatar = await _service.GetAvatar(username); + return File(avatar.Data, avatar.Type); + } + catch (UserNotExistException) + { + _logger.LogInformation($"Attempt to get a avatar of a non-existent user failed. Username: {username} ."); + return NotFound(new CommonResponse(ErrorCodes.Get_UserNotExist, "User does not exist.")); + } + } + + [HttpPut("users/{username}/avatar")] + [Consumes("image/png", "image/jpeg", "image/gif", "image/webp")] + public async Task Put(string username) + { + try + { + var data = new byte[Convert.ToInt32(Request.ContentLength)]; + await Request.Body.ReadAsync(data, 0, data.Length); + + await _service.SetAvatar(username, new Avatar + { + Data = data, + Type = Request.ContentType + }); + + _logger.LogInformation($"Succeed to put a avatar of a user. Username: {username} . Mime Type: {Request.ContentType} ."); + return Ok(); + } + catch (UserNotExistException) + { + _logger.LogInformation($"Attempt to put a avatar of a non-existent user failed. Username: {username} ."); + return BadRequest(new CommonResponse(ErrorCodes.Put_UserNotExist, "User does not exist.")); + } + } + } +} -- cgit v1.2.3