/// <summary> /// Resolves and returns a <see cref="Uri"/> based on the template given /// during construction and the data provided for <paramref name="templateData"/>. /// </summary> public Uri?ResolveTemplate(UriTemplateData templateData) { if (templateData is null) { throw new ArgumentNullException(nameof(templateData)); } var rawUri = _templateResolver(templateData); if (string.IsNullOrWhiteSpace(rawUri)) { return(null); } return(new Uri(rawUri)); }
/// <inheritdoc/> public async Task <Image?> GetAvatarAsync(string email, string?name, int imageSize) { var templateData = new UriTemplateData(email, name, imageSize); foreach (var provider in _subProvider) { var avatar = provider switch { UriTemplateResolver r => await _downloader.DownloadImageAsync(r.ResolveTemplate(templateData)), _ => await provider.GetAvatarAsync(email, name, imageSize), }; if (avatar is not null) { return(avatar); } } return(null); }