Пример #1
0
 public Task <IEnumerable <string> > GetCultureCodesAsync(ContentVersion currentVersion = null)
 {
     return(Task.FromResult(_cache.Keys.AsEnumerable()));
 }
Пример #2
0
 public Task <IEnumerable <ContentItem> > GetAllContentItemsAsync(string cultureCode, ContentVersion currentVersion = null)
 {
     return(Task.FromResult(GetCacheForCulture(cultureCode).Values.AsEnumerable()));
 }
Пример #3
0
        public async Task <IEnumerable <ContentItem> > GetAllContentItemsAsync(string cultureCode, ContentVersion requestedVersion)
        {
            if (requestedVersion == null)
            {
                requestedVersion = await GetVersionAsync()
                                   .ConfigureAwait(false);
            }

            string fileName = GetCultureFileName(cultureCode);

            var tryCount = 100;

            for (int i = 0; i < tryCount; i++)
            {
                try
                {
                    if (!File.Exists(fileName) && NextSource != null)
                    {
                        var items = await NextSource.GetAllContentItemsAsync(cultureCode, requestedVersion)
                                    .ConfigureAwait(false);

                        await SaveAllContentItemsAsync(cultureCode, items)
                        .ConfigureAwait(false);
                    }

                    using var file   = File.OpenRead(fileName);
                    using var sr     = new StreamReader(file);
                    using var reader = new JsonTextReader(sr);
                    var serializer = new JsonSerializer();

                    return(serializer.Deserialize <IEnumerable <ContentItem> >(reader));
                }
                catch (IOException)
                {
                    if (i == (tryCount - 1))
                    {
                        throw;
                    }

                    await Task.Delay(100).ConfigureAwait(false);
                }
            }

            #pragma warning disable CA1303 // Do not pass literals as localized parameters
            throw new IOException("Error Getting File");
            #pragma warning restore CA1303 // Do not pass literals as localized parameters
        }