public static void WriteOperations(string targetDir, GraphAggregateEntity aggregateOperation, Func <GraphAggregateEntity, OperationEntity> mergeOperations, Func <GraphAggregateEntity, OperationEntity> mergeFunctionOrActions) { var mainOperation = aggregateOperation.MainOperation; var operationFilePath = Utility.GetPath(mainOperation.Service, mainOperation.GroupName, mainOperation.Name); var absolutePath = Path.Combine(targetDir, $"{operationFilePath}{YamlExtension}"); if (!Directory.Exists(Path.GetDirectoryName(absolutePath))) { Directory.CreateDirectory(Path.GetDirectoryName(absolutePath)); } using (var writer = new StreamWriter(absolutePath)) { if (aggregateOperation.IsFunctionOrAction) { //todo: YamlMime:RESTFunctionV3 var mergedResult = mergeFunctionOrActions(aggregateOperation); writer.WriteLine("### YamlMime:RESTOperationV3"); YamlSerializer.Serialize(writer, mergedResult); } else { var mergedResult = mergeOperations(aggregateOperation); writer.WriteLine("### YamlMime:RESTOperationV3"); YamlSerializer.Serialize(writer, mergedResult); } } }
private OperationEntity MergeOperations(GraphAggregateEntity aggregateOperation) { var mainOperation = aggregateOperation.MainOperation; if (aggregateOperation.GroupedOperations?.Count > 0) { foreach (var groupedOperation in aggregateOperation.GroupedOperations) { mainOperation.Paths.Add(groupedOperation.Paths[0]); } } return(mainOperation); }