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); } } } }
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); }