Exemple #1
0
        /// <inheritdoc/>
        public async ValueTask <string?> GetMarkupFromUrlAsync(string?url)
        {
            if (url == null)
            {
                return(null);
            }

            if (_cache.TryGetValue(url, out var markup))
            {
                return(markup);
            }

            var response = await _httpClient.GetAsync(url);

            if (response.IsSuccessStatusCode)
            {
                markup = await response.Content.ReadAsStringAsync();

                // Add fetched svg to cache
                _cache.AddOrUpdate(url, markup);

                return(markup);
            }
            else if (_options.IconFetchBehavior == IconFetchBehavior.Once)
            {
                // Add entry to cache, so that the file won't get fetched again
                _cache.AddOrUpdate(url, null);
            }

            return(null);
        }