private void ApplyConstraintsXmlToActionParameters(IList <IParameter> parameters, ApiDescription apiDescription) { var nonBodyParameters = parameters.OfType <NonBodyParameter>(); foreach (var parameter in nonBodyParameters) { // Check for a corresponding action parameter? var actionParameter = apiDescription.ParameterDescriptions.FirstOrDefault(p => parameter.Name.Equals(p.Name, StringComparison.OrdinalIgnoreCase)); if (actionParameter == null) { continue; } if (!actionParameter.RouteInfo.Constraints.Any()) { continue; } var constraintType = actionParameter.RouteInfo.Constraints.FirstOrDefault().GetType(); var commentIdForType = XmlCommentsIdHelper.GetCommentIdForType(constraintType); var constraintSummaryNode = _xmlNavigator .SelectSingleNode(string.Format(MemberXPath, commentIdForType)) ?.SelectSingleNode(SummaryXPath); if (constraintSummaryNode != null) { parameter.Description = XmlCommentsTextHelper.Humanize(constraintSummaryNode.InnerXml); } } }
public void Method_from_inherited_action_put() { var methodInfo = typeof(BaseChildController).GetMethod("Put"); var comment = XmlCommentsIdHelper.GetCommentIdForMethod(methodInfo); Assert.AreEqual("M:Swagger.Net.Dummy.Controllers.BaseController`1.Put(`0,System.String)", comment); }
/// <summary> /// old ImodelFilter way /// </summary> /// <param name="model"></param> /// <param name="context"></param> private void Apply(Schema model, ModelFilterContext context) { var commentId = XmlCommentsIdHelper.GetCommentIdForType(context.SystemType); var typeNode = _navigator.SelectSingleNode(string.Format(MemberXPath, commentId)); if (typeNode != null) { var summaryNode = typeNode.SelectSingleNode(SummaryTag); if (summaryNode != null) { model.description = summaryNode.ExtractContent(); } } foreach (var entry in model.properties) { var jsonProperty = context.JsonObjectContract.Properties[entry.Key]; if (jsonProperty == null) { continue; } ApplyPropertyComments(entry.Value, jsonProperty.PropertyInfo()); } }
public void GetCommentIdForType_ReturnsCorrectXmlCommentId_ForGivenType( Type type, string expectedCommentId ) { var commentId = XmlCommentsIdHelper.GetCommentIdForType(type); Assert.Equal(expectedCommentId, commentId); }
public void GetCommentIdForMethod_ReturnsCorrectXmlCommentId_ForGivenMethodInfo( string actionFixtureName, string expectedCommentId ) { var methodInfo = typeof(FakeActions).GetMethod(actionFixtureName); var commentId = XmlCommentsIdHelper.GetCommentIdForMethod(methodInfo); Assert.Equal(expectedCommentId, commentId); }
public void GetCommentIdForProperty_ReturnsCorrectXmlCommentId_ForGivenPropertyInfo( Type type, string propertyName, string expectedCommentId ) { var propertyInfo = type.GetProperty(propertyName); var commentId = XmlCommentsIdHelper.GetCommentIdForProperty(propertyInfo); Assert.Equal(expectedCommentId, commentId); }
private void ApplyPropertyComments(Schema propertySchema, PropertyInfo propertyInfo) { if (propertyInfo == null) { return; } var commentId = XmlCommentsIdHelper.GetCommentIdForProperty(propertyInfo); var propertyNode = _navigator.SelectSingleNode(string.Format(MemberXPath, commentId)); if (propertyNode == null) { return; } var propSummaryNode = propertyNode.SelectSingleNode(SummaryTag); if (propSummaryNode != null) { propertySchema.description = propSummaryNode.ExtractContent(); } }
/// <summary> /// new way /// </summary> /// <param name="model"></param> /// <param name="schemaRegistry"></param> /// <param name="type"></param> public void Apply(Schema model, SchemaRegistry schemaRegistry, Type type) { var commentId = XmlCommentsIdHelper.GetCommentIdForType(type); var typeNode = _navigator.SelectSingleNode(string.Format(MemberXPath, commentId)); if (typeNode != null) { var summaryNode = typeNode.SelectSingleNode(SummaryTag); if (summaryNode != null) { model.description = summaryNode.ExtractContent(); } } //var _contractResolver = schemaRegistry.jsonSerializerSettings.ContractResolver ?? new DefaultContractResolver(); foreach (var entry in model.properties) { continue;//TODO figure out how to get 'context' from model //var jsonProperty = context.JsonObjectContract.Properties[entry.Key]; //if (jsonProperty == null) continue; //ApplyPropertyComments(entry.Value, jsonProperty.PropertyInfo()); } }