public SwaggerProperty Create(IPropertyDetails propertyDetails, Queue <Type> typeQueue) { if (propertyDetails == null) { throw new ArgumentNullException(nameof(propertyDetails)); } var swaggerType = _swaggerTypeConverter.GetSwaggerType(propertyDetails.PropertyType); switch (swaggerType) { case SwaggerType.Object: typeQueue.Enqueue(propertyDetails.PropertyType); return(new ReferencedSwaggerProperty { Name = propertyDetails.Name, Reference = _definitionNameProvider.GetDefinitionName(propertyDetails.PropertyType) }); case SwaggerType.Array: var propertyType = _swaggerTypeConverter.GetTypeToDocument(propertyDetails.PropertyType); typeQueue?.Enqueue(propertyType); return(new ArraySwaggerProperty { Name = propertyDetails.Name, Reference = _definitionNameProvider.GetDefinitionName(propertyType) }); } return(new TypedSwaggerProperty { Name = propertyDetails.Name, Type = swaggerType }); }
public SwaggerSchema Create(Type type, IEnumerable <IPropertyDetails> propertyDetails, Queue <Type> typeQueue) { if (type == null) { throw new ArgumentNullException(nameof(type)); } var schema = new SwaggerSchema { Title = type.Name, Type = _swaggerTypeConverter.GetSwaggerType(type) // TODO: Required }; if (schema.Type == SwaggerType.Object && propertyDetails != null) { schema.Properties = new SwaggerObjectCollectionFacade <SwaggerProperty>( propertyDetails.Select(p => _propertyFactory.Create(p, typeQueue))); } return(schema); }