aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'ApartmentManager/HousingWebApi/Areas/HelpPage/App_Start')
-rw-r--r--ApartmentManager/HousingWebApi/Areas/HelpPage/App_Start/HelpPageConfig.cs113
1 files changed, 113 insertions, 0 deletions
diff --git a/ApartmentManager/HousingWebApi/Areas/HelpPage/App_Start/HelpPageConfig.cs b/ApartmentManager/HousingWebApi/Areas/HelpPage/App_Start/HelpPageConfig.cs
new file mode 100644
index 0000000..b568bab
--- /dev/null
+++ b/ApartmentManager/HousingWebApi/Areas/HelpPage/App_Start/HelpPageConfig.cs
@@ -0,0 +1,113 @@
+// Uncomment the following to provide samples for PageResult<T>. Must also add the Microsoft.AspNet.WebApi.OData
+// package to your project.
+////#define Handle_PageResultOfT
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Diagnostics.CodeAnalysis;
+using System.Linq;
+using System.Net.Http.Headers;
+using System.Reflection;
+using System.Web;
+using System.Web.Http;
+#if Handle_PageResultOfT
+using System.Web.Http.OData;
+#endif
+
+namespace HousingWebApi.Areas.HelpPage
+{
+ /// <summary>
+ /// Use this class to customize the Help Page.
+ /// For example you can set a custom <see cref="System.Web.Http.Description.IDocumentationProvider"/> to supply the documentation
+ /// or you can provide the samples for the requests/responses.
+ /// </summary>
+ public static class HelpPageConfig
+ {
+ [SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters",
+ MessageId = "HousingWebApi.Areas.HelpPage.TextSample.#ctor(System.String)",
+ Justification = "End users may choose to merge this string with existing localized resources.")]
+ [SuppressMessage("Microsoft.Naming", "CA2204:Literals should be spelled correctly",
+ MessageId = "bsonspec",
+ Justification = "Part of a URI.")]
+ public static void Register(HttpConfiguration config)
+ {
+ //// Uncomment the following to use the documentation from XML documentation file.
+ //config.SetDocumentationProvider(new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/XmlDocument.xml")));
+
+ //// Uncomment the following to use "sample string" as the sample for all actions that have string as the body parameter or return type.
+ //// Also, the string arrays will be used for IEnumerable<string>. The sample objects will be serialized into different media type
+ //// formats by the available formatters.
+ //config.SetSampleObjects(new Dictionary<Type, object>
+ //{
+ // {typeof(string), "sample string"},
+ // {typeof(IEnumerable<string>), new string[]{"sample 1", "sample 2"}}
+ //});
+
+ // Extend the following to provide factories for types not handled automatically (those lacking parameterless
+ // constructors) or for which you prefer to use non-default property values. Line below provides a fallback
+ // since automatic handling will fail and GeneratePageResult handles only a single type.
+#if Handle_PageResultOfT
+ config.GetHelpPageSampleGenerator().SampleObjectFactories.Add(GeneratePageResult);
+#endif
+
+ // Extend the following to use a preset object directly as the sample for all actions that support a media
+ // type, regardless of the body parameter or return type. The lines below avoid display of binary content.
+ // The BsonMediaTypeFormatter (if available) is not used to serialize the TextSample object.
+ config.SetSampleForMediaType(
+ new TextSample("Binary JSON content. See http://bsonspec.org for details."),
+ new MediaTypeHeaderValue("application/bson"));
+
+ //// Uncomment the following to use "[0]=foo&[1]=bar" directly as the sample for all actions that support form URL encoded format
+ //// and have IEnumerable<string> as the body parameter or return type.
+ //config.SetSampleForType("[0]=foo&[1]=bar", new MediaTypeHeaderValue("application/x-www-form-urlencoded"), typeof(IEnumerable<string>));
+
+ //// Uncomment the following to use "1234" directly as the request sample for media type "text/plain" on the controller named "Values"
+ //// and action named "Put".
+ //config.SetSampleRequest("1234", new MediaTypeHeaderValue("text/plain"), "Values", "Put");
+
+ //// Uncomment the following to use the image on "../images/aspNetHome.png" directly as the response sample for media type "image/png"
+ //// on the controller named "Values" and action named "Get" with parameter "id".
+ //config.SetSampleResponse(new ImageSample("../images/aspNetHome.png"), new MediaTypeHeaderValue("image/png"), "Values", "Get", "id");
+
+ //// Uncomment the following to correct the sample request when the action expects an HttpRequestMessage with ObjectContent<string>.
+ //// The sample will be generated as if the controller named "Values" and action named "Get" were having string as the body parameter.
+ //config.SetActualRequestType(typeof(string), "Values", "Get");
+
+ //// Uncomment the following to correct the sample response when the action returns an HttpResponseMessage with ObjectContent<string>.
+ //// The sample will be generated as if the controller named "Values" and action named "Post" were returning a string.
+ //config.SetActualResponseType(typeof(string), "Values", "Post");
+ }
+
+#if Handle_PageResultOfT
+ private static object GeneratePageResult(HelpPageSampleGenerator sampleGenerator, Type type)
+ {
+ if (type.IsGenericType)
+ {
+ Type openGenericType = type.GetGenericTypeDefinition();
+ if (openGenericType == typeof(PageResult<>))
+ {
+ // Get the T in PageResult<T>
+ Type[] typeParameters = type.GetGenericArguments();
+ Debug.Assert(typeParameters.Length == 1);
+
+ // Create an enumeration to pass as the first parameter to the PageResult<T> constuctor
+ Type itemsType = typeof(List<>).MakeGenericType(typeParameters);
+ object items = sampleGenerator.GetSampleObject(itemsType);
+
+ // Fill in the other information needed to invoke the PageResult<T> constuctor
+ Type[] parameterTypes = new Type[] { itemsType, typeof(Uri), typeof(long?), };
+ object[] parameters = new object[] { items, null, (long)ObjectGenerator.DefaultCollectionSize, };
+
+ // Call PageResult(IEnumerable<T> items, Uri nextPageLink, long? count) constructor
+ ConstructorInfo constructor = type.GetConstructor(parameterTypes);
+ return constructor.Invoke(parameters);
+ }
+ }
+
+ return null;
+ }
+#endif
+ }
+} \ No newline at end of file