public async Task SaveAsync(string tenant, IDictionary <string, string> data)
        {
            JObject tenantsSettings;

            var fileInfo = await _shellsFileStore.GetFileInfoAsync(_tenantsBlobName);

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

            var settings = tenantsSettings.GetValue(tenant) as JObject ?? new JObject();

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

            tenantsSettings[tenant] = settings;

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

                        await jsonWriter.FlushAsync();

                        memoryStream.Position = 0;
                        await _shellsFileStore.CreateFileFromStreamAsync(_tenantsBlobName, memoryStream);
                    }
                }
            }
        }
Exemplo n.º 2
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);
                    }
                }
            }
        }
        private async Task <bool> TryMigrateFromFileAsync(string fileSystemPath, string destPath)
        {
            if (!File.Exists(fileSystemPath))
            {
                return(false);
            }

            using (var file = File.OpenRead(fileSystemPath))
            {
                await _shellsFileStore.CreateFileFromStreamAsync(destPath, file);
            }

            return(true);
        }