BoC.Web.Mvc.Extensions.HttpRequestBaseExtensions.GetPreferedResponseType C# (CSharp) Method

GetPreferedResponseType() public static method

public static GetPreferedResponseType ( this request ) : ResponseType
request this
return ResponseType
        public static ResponseType GetPreferedResponseType(this HttpRequestBase request)
        {
            ResponseType result = ResponseType.None;

            RouteData routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current));

            // The requested format
            // is specified via the querystring
            string format = request.QueryString["format"] ?? routeData.Values["resultformat"] as string ?? routeData.DataTokens["resultformat"] as string;

            if (String.IsNullOrEmpty(format))
            {
                if (request.AcceptTypes != null &&
                    request.AcceptTypes.Length > 0 &&
                    !String.IsNullOrEmpty(request.AcceptTypes[0]) &&
                    request.AcceptTypes[0].IndexOf("json", StringComparison.InvariantCultureIgnoreCase) > 0)
                    result = ResponseType.Json;
                else
                    // If no querystring was specified,
                    // assume the default HTML format
                    result = ResponseType.Html;
            }
            else
            {
                if (String.Equals(format, "html", StringComparison.InvariantCultureIgnoreCase))
                {
                    result = ResponseType.Html;
                }
                else if (String.Equals(format, "xml", StringComparison.InvariantCultureIgnoreCase))
                {
                    result = ResponseType.Xml;
                }
                else if (String.Equals(format, "json", StringComparison.InvariantCultureIgnoreCase))
                {
                    result = ResponseType.Json;
                }
            }

            return result;
        }