/// <summary> /// Loads avatar either from the local cache or from the remote service. /// </summary> public async Task <Image> GetAvatarAsync(string email, int imageSize, string defaultImageType) { var imageFileName = _avatarImageNameProvider.Get(email); var image = await _cache.GetImageAsync(imageFileName, null); if (image == null) { image = await LoadFromGravatarAsync(imageFileName, email, imageSize, GetDefaultImageType(defaultImageType)); } return(image); }
/// <summary> /// Loads avatar either from the local cache or from the remote service. /// </summary> public async Task <Image> GetAvatarAsync(string email, int imageSize, string defaultImageType) { var imageFileName = _avatarImageNameProvider.Get(email); var image = await _cache.GetImageAsync(imageFileName, null); if (image == null) { if (email.EndsWith(GitHubPrivateEmailSuffix, StringComparison.OrdinalIgnoreCase)) { image = await LoadFromGitHubAsync(imageFileName, email, imageSize); } else { image = await LoadFromGravatarAsync(imageFileName, email, imageSize, GetDefaultImageType(defaultImageType)); } } return(image); }
public async Task GetAvatarAsync_should_not_call_gravatar_if_exist_in_cache() { var avatar = Resources.User; _cache.GetImageAsync(Arg.Any <string>(), null).Returns(avatar); var image = await _service.GetAvatarAsync(Email, 1, DefaultImageType.Identicon.ToString()); image.Should().Be(avatar); Received.InOrder(async() => { await _cache.Received(1).GetImageAsync($"{Email}.png", null); }); await _cache.DidNotReceive().AddImageAsync(Arg.Any <string>(), Arg.Any <Stream>()); }