public static async Task <SwaggerDocumentViewModel> ToViewModelAsync(SwaggerSession session) { var doc = await SwaggerDocumentLoader.LoadFromUrlAsync(session.Url); var vm = new SwaggerDocumentViewModel(doc, session.Url, session.DisplayName); foreach (var storedOp in session.Operations) { var operation = vm.OperationGroups .SelectMany(g => g) .FirstOrDefault(op => op.OperationId == storedOp.Key); if (operation != null) { operation.SelectedContentType = storedOp.Value.ContentType; foreach (var storedArg in storedOp.Value.Arguments) { var parameter = operation.Arguments.FirstOrDefault(p => p.ParameterId == storedArg.Key); await parameter.SetSerializedValueAsync(storedArg.Value); } } } return(vm); }
public async Task StoreAsync(SwaggerSession session) { await _initTask; if (!_sessions.TryGetValue(session.Url, out var info)) { info = new SwaggerSessionInfo(session.DisplayName, session.Url, Guid.NewGuid()); _sessions.Add(session.Url, info); } var sessionFile = await _folder.CreateFileAsync($"{info.Guid}.json", CreationCollisionOption.ReplaceExisting); var json = session.ToJson(); await FileIO.WriteTextAsync(sessionFile, json); }
public async Task <SwaggerSession> LoadAsync(string url) { await _initTask; if (!_sessions.TryGetValue(url, out var info)) { throw new ArgumentException($"No stored session exists for URL '{url}'"); } try { var sessionFile = await _folder.GetFileAsync($"{info.Guid.ToString()}.json"); var json = await FileIO.ReadTextAsync(sessionFile); if (string.IsNullOrEmpty(json)) { return(EmptySession()); } return(SwaggerSession.FromJson(json)); } catch (FileNotFoundException) { // In case someone deleted the session file, just load the session without // filling in any parameter values return(EmptySession()); } SwaggerSession EmptySession() => new SwaggerSession { Url = url, DisplayName = info.DisplayName, Operations = new Dictionary <string, SwaggerSession.StoredOperation>() }; }