secret
Created

  • Download Gist
gistfile1.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
// New code //
 
[AttributeUsage(AttributeTargets.Method)]
public class MyParameterAttribute : Attribute
{
public string Name { get; set; }
public string Documentation { get; set; }
public ApiParameterSource Source { get; set; }
}
 
public class MyHttpParameterDescriptor : HttpParameterDescriptor
{
public Type MyParameterType { get; set; }
public MyHttpParameterDescriptor(Type type)
{
MyParameterType = type;
}
 
public override string ParameterName
{
get { return ""; }
}
 
public override Type ParameterType
{
get { return MyParameterType; }
}
}
 
//////////////
 
[SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "The exception is recorded as ErrorMessages.")]
private static HelpPageApiModel GenerateApiModel(ApiDescription apiDescription, HelpPageSampleGenerator sampleGenerator)
{
HelpPageApiModel apiModel = new HelpPageApiModel();
apiModel.ApiDescription = apiDescription;
 
// New code //
MyParameterAttribute customAttribute = apiDescription.ActionDescriptor.GetCustomAttributes<MyParameterAttribute>().FirstOrDefault();
if (customAttribute != null)
{
apiDescription.ParameterDescriptions.Add(new ApiParameterDescription
{
Name = customAttribute.Name,
Documentation = customAttribute.Documentation,
Source = customAttribute.Source,
ParameterDescriptor = new MyHttpParameterDescriptor(typeof(File))
});
}
//////////////
 
try
{
foreach (var item in sampleGenerator.GetSampleRequests(apiDescription))
{
apiModel.SampleRequests.Add(item.Key, item.Value);
LogInvalidSampleAsError(apiModel, item.Value);
}
 
foreach (var item in sampleGenerator.GetSampleResponses(apiDescription))
{
apiModel.SampleResponses.Add(item.Key, item.Value);
LogInvalidSampleAsError(apiModel, item.Value);
}
}
catch (Exception e)
{
apiModel.ErrorMessages.Add(String.Format(CultureInfo.CurrentCulture, "An exception has occurred while generating the sample. Exception Message: {0}", e.Message));
}
 
return apiModel;
}

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.