public async Task <UserAvatar> GetAvatarAsync(string email, ImageDimensions dimensions) { try { var user = await _userRepository.GetUserFromEmailAsync(email); if (user == null) { return(UserAvatar.NotAvailable); } var requestUri = new Uri(_config.ApiBaseUrl, $"/_apis/GraphProfile/MemberAvatars/{user.Descriptor}?size=2"); var client = _httpClientFactory.GetClient(); using (var response = await client.GetAsync(requestUri)) { if (response.IsSuccessStatusCode) { var data = await response.Content.ReadAsByteArrayAsync(); var contentType = response.Content.Headers.ContentType.MediaType; var type = _imageFormatManager.FindFormatByMimeType(contentType); using (var image = Image.Load(data)) { var resizedImage = _imageResizer.Resize(image, dimensions.Height, dimensions.Width); var bytes = resizedImage.ConvertToByteArray(type); return(new UserAvatar { Data = bytes, ContentType = contentType }); } } } } catch (Exception ex) { _logger.LogError($"Error getting Azure Dev Ops users list or user avatar: {ex.Message}"); } throw new NotImplementedException(); }
public async Task <UserAvatar> GetAvatarAsync(string email, ImageDimensions dimensions) { try { var hash = GetHash(email.ToLower().Trim()); var requestUri = new Uri($"https://www.gravatar.com/avatar/{hash}?s=400&d=404"); var client = _httpClientFactory.CreateClient(); using (var response = await client.GetAsync(requestUri)) { if (response.IsSuccessStatusCode) { var data = await response.Content.ReadAsByteArrayAsync(); var contentType = response.Content.Headers.ContentType.MediaType; var type = _imageFormatManager.FindFormatByMimeType(contentType); using (var image = Image.Load(data)) { var resizedImage = _imageResizer.Resize(image, dimensions.Height, dimensions.Width); var bytes = resizedImage.ConvertToByteArray(type); return(new UserAvatar { Data = bytes, ContentType = contentType }); } } } } catch (Exception ex) { _logger.LogError($"Error getting Gravatar for '{email}': {ex.Message}"); } return(UserAvatar.NotAvailable); }