コード例 #1
0
        public async Task SaveAsync(string tenant, IDictionary <string, string> data)
        {
            var appsettings = IFileStoreExtensions.Combine(null, _container, tenant, "appsettings.json");

            JObject config;
            var     fileInfo = await _shellsFileStore.GetFileInfoAsync(appsettings);

            if (fileInfo != null)
            {
                using (var stream = await _shellsFileStore.GetFileStreamAsync(appsettings))
                {
                    using (var streamReader = new StreamReader(stream))
                    {
                        using (var reader = new JsonTextReader(streamReader))
                        {
                            config = await JObject.LoadAsync(reader);
                        }
                    }
                }
            }
            else
            {
                config = new JObject();
            }

            foreach (var key in data.Keys)
            {
                if (data[key] != null)
                {
                    config[key] = data[key];
                }
                else
                {
                    config.Remove(key);
                }
            }

            using (var memoryStream = new MemoryStream())
            {
                using (var streamWriter = new StreamWriter(memoryStream))
                {
                    using (var jsonWriter = new JsonTextWriter(streamWriter)
                    {
                        Formatting = Formatting.Indented
                    })
                    {
                        await config.WriteToAsync(jsonWriter);

                        await jsonWriter.FlushAsync();

                        memoryStream.Position = 0;
                        await _shellsFileStore.CreateFileFromStreamAsync(appsettings, memoryStream);
                    }
                }
            }
        }
コード例 #2
0
        public async Task AddSourcesAsync(string tenant, IConfigurationBuilder builder)
        {
            var appSettings = IFileStoreExtensions.Combine(null, _container, tenant, "appsettings.json");
            var fileInfo    = await _shellsFileStore.GetFileInfoAsync(appSettings);

            if (fileInfo == null && _blobOptions.MigrateFromFiles)
            {
                if (await TryMigrateFromFileAsync(tenant, appSettings))
                {
                    fileInfo = await _shellsFileStore.GetFileInfoAsync(appSettings);
                }
            }
            if (fileInfo != null)
            {
                var stream = await _shellsFileStore.GetFileStreamAsync(appSettings);

                builder.AddJsonStream(stream);
            }
        }