Example #1
0
        public static IHttpResponse FindAsync(
            //Security security,
            HttpApplication application, IHttpRequest request, IProvideUrl url,
            ContentTypeResponse <WebIdManifest> onFound,
            ContentTypeResponse <Api.Resources.Manifest> onContent,
            ViewFileResponse <Api.Resources.Manifest> onHtml)
        {
            if (request.GetAcceptTypes().Where(accept => accept.MediaType.ToLower().Contains("html")).Any())
            {
                return(HtmlContent(application, request, url, onHtml));
            }

            LocateControllers();
            var endpoints = Manifest.lookup
                            .Select(
                type =>
            {
                var endpoint = url.GetWebId(type, "x-com.orderowl:ordering");
                return(endpoint);
            })
                            .ToArray();

            var manifest = new WebIdManifest()
            {
                Id        = Guid.NewGuid(),
                Endpoints = endpoints,
            };

            return(onFound(manifest));
        }
        public double GetPreference(IHttpRequest request)
        {
            if (Preference != defaultPreference)
            {
                return(Preference);
            }

            var accepts = request.GetAcceptTypes();
            var matches = accepts.Where(mt => mt.MediaType.ToLower() == this.MediaType);

            if (matches.Any())
            {
                var match = matches.First();
                if (match.Quality.HasValue)
                {
                    return(match.Quality.Value);
                }
                return(0.5);
            }

            if (accepts.Where(mt => mt.MediaType.ToLower().Contains("json")).Any())
            {
                return(0.2);
            }

            return(-0.1);
        }