private List <ResponseTypeNameAndItemSchema> GetResponseTypeNamesAndItemSchema( List <Tuple <HttpStatusCode, string> > responseTypeNames) { var list = new List <ResponseTypeNameAndItemSchema>(); foreach (var responseTypeName in responseTypeNames) { if (string.IsNullOrEmpty(responseTypeName.Item2)) { list.Add(new ResponseTypeNameAndItemSchema(responseTypeName.Item1, responseTypeName.Item2, null !)); } else { var rawModelName = OpenApiDocumentSchemaModelNameHelper.GetRawModelName(responseTypeName.Item2); var isShared = OperationSchemaMappings.IsShared(rawModelName); var fullModelName = OpenApiDocumentSchemaModelNameHelper.EnsureModelNameWithNamespaceIfNeeded( ApiProjectOptions.ProjectName, FocusOnSegmentName, responseTypeName.Item2, isShared, isClient: false); var schema = ApiProjectOptions.Document.Components.Schemas.FirstOrDefault(x => x.Key.Equals(rawModelName, StringComparison.OrdinalIgnoreCase)); list.Add(new ResponseTypeNameAndItemSchema(responseTypeName.Item1, fullModelName, schema.Value)); } } return(list); }
public List <SyntaxGeneratorContractModel> GenerateSyntaxTrees() { var list = new List <SyntaxGeneratorContractModel>(); var apiOperationSchemaMaps = OperationSchemaMappings .Where(x => (x.LocatedArea == SchemaMapLocatedAreaType.Response || x.LocatedArea == SchemaMapLocatedAreaType.RequestBody) && x.SegmentName.Equals(FocusOnSegmentName, StringComparison.OrdinalIgnoreCase)) .ToList(); var schemaKeys = apiOperationSchemaMaps .Select(x => x.SchemaKey) .Distinct() .OrderBy(x => x) .ToList(); foreach (var schemaKey in schemaKeys) { var apiSchema = ApiProjectOptions.Document.Components.Schemas.First(x => x.Key.Equals(schemaKey, StringComparison.OrdinalIgnoreCase)); if (apiSchema.Value.IsSchemaEnumOrPropertyEnum()) { var syntaxGeneratorContractModel = new SyntaxGeneratorContractModel(ApiProjectOptions, apiSchema.Key, apiSchema.Value, FocusOnSegmentName); syntaxGeneratorContractModel.GenerateCode(); list.Add(syntaxGeneratorContractModel); } else { var isShared = OperationSchemaMappings.IsShared(schemaKey); if (isShared) { var syntaxGeneratorContractModel = new SyntaxGeneratorContractModel(ApiProjectOptions, apiSchema.Key, apiSchema.Value, "#"); syntaxGeneratorContractModel.GenerateCode(); list.Add(syntaxGeneratorContractModel); } else { var syntaxGeneratorContractModel = new SyntaxGeneratorContractModel(ApiProjectOptions, apiSchema.Key, apiSchema.Value, FocusOnSegmentName); syntaxGeneratorContractModel.GenerateCode(); list.Add(syntaxGeneratorContractModel); } } } return(list); }
// CopyFrom - SyntaxGeneratorEndpointControllers private bool HasSharedResponseContract() { foreach (var(_, value) in ApiProjectOptions.Document.GetPathsByBasePathSegmentName(FocusOnSegmentName)) { foreach (var apiOperation in value.Operations) { if (apiOperation.Value.Responses == null) { continue; } var responseModelName = apiOperation.Value.Responses.GetModelNameForStatusCode(HttpStatusCode.OK); var isSharedResponseModel = !string.IsNullOrEmpty(responseModelName) && OperationSchemaMappings.IsShared(responseModelName); if (isSharedResponseModel) { return(true); } } } return(false); }