Exemple #1
0
 public FubuContinuation Redirect()
 {
     return(FubuContinuation.RedirectTo(new LoginRequest
     {
         Url = _currentRequest.RelativeUrl()
     }, "GET"));
 }
 public HttpRequestData get_request_data()
 {
     return(new HttpRequestData {
         FullUrl = _request.FullUrl(),
         HttpMethod = _request.HttpMethod(),
         RawUrl = _request.RawUrl(),
         RelativeUrl = _request.RelativeUrl()
     });
 }
 public UrlContextModel Get(UrlRequest request)
 {
     return(new UrlContextModel()
     {
         RelativeUrl = _currentHttpRequest.RelativeUrl(),
         RawUrl = _currentHttpRequest.RawUrl(),
         FullUrl = _currentHttpRequest.ToFullUrl(request.FullUrl ?? "/")
     });
 }
        public override MiddlewareContinuation Invoke(ICurrentHttpRequest request, IHttpWriter writer)
        {
            if (request.IsNotHttpMethod("GET", "HEAD"))
            {
                return(MiddlewareContinuation.Continue());
            }

            var file = _files.Find(request.RelativeUrl());

            if (file == null)
            {
                return(MiddlewareContinuation.Continue());
            }

            if (_settings.DetermineStaticFileRights(file) != AuthorizationRight.Allow)
            {
                return(MiddlewareContinuation.Continue());
            }

            if (request.IsHead())
            {
                return(new WriteFileHeadContinuation(writer, file, HttpStatusCode.OK));
            }

            if (request.IfMatchHeaderDoesNotMatchEtag(file))
            {
                return(new WriteStatusCodeContinuation(writer, HttpStatusCode.PreconditionFailed, "If-Match test failed"));
            }

            if (request.IfNoneMatchHeaderMatchesEtag(file))
            {
                return(new WriteFileHeadContinuation(writer, file, HttpStatusCode.NotModified));
            }

            if (request.IfModifiedSinceHeaderAndNotModified(file))
            {
                return(new WriteFileHeadContinuation(writer, file, HttpStatusCode.NotModified));
            }

            if (request.IfUnModifiedSinceHeaderAndModifiedSince(file))
            {
                return(new WriteStatusCodeContinuation(writer, HttpStatusCode.PreconditionFailed, "File has been modified"));
            }

            return(new WriteFileContinuation(writer, file));
        }
Exemple #5
0
        /// <summary>
        /// Converts the given url to a url relative to the current request
        /// </summary>
        /// <param name="request"></param>
        /// <param name="url"></param>
        /// <returns></returns>
        public static string ToRelativeContentUrl(this ICurrentHttpRequest request, string url)
        {
            var current    = request.RelativeUrl().TrimStart('/');
            var contentUrl = url.TrimStart('/');

            if (current == string.Empty)
            {
                return(contentUrl);
            }

            if (contentUrl.StartsWith(current))
            {
                return(contentUrl.Substring(current.Length).TrimStart('/'));
            }

            var prepend     = current.Split('/').Select(x => "..").Join("/");
            var relativeUrl = prepend.AppendUrl(contentUrl);

            return(relativeUrl);
        }
        public RequestLog BuildForCurrentRequest()
        {
            var report = new ValueReport();

            _requestData.WriteReport(report);

            var chainId = _currentChain.OriginatingChain == null ? Guid.Empty :
                          _currentChain.OriginatingChain.UniqueId;
            var log = new RequestLog {
                ChainId     = chainId,
                Time        = _systemTime.UtcNow(),
                RequestData = report,
                ChainUrl    = _urls.UrlFor(new ChainRequest {
                    Id = chainId
                }),
                DetailsUrl = _urls.UrlFor(new ChainDetailsRequest {
                    Id = chainId
                })
            };

            if (_currentChain.OriginatingChain.Route != null)
            {
                log.HttpMethod = _request.HttpMethod();
                log.Endpoint   = _request.RelativeUrl();
            }
            else if (_currentChain.OriginatingChain.InputType() != null)
            {
                log.Endpoint   = _currentChain.OriginatingChain.InputType().FullName;
                log.HttpMethod = "n/a";
            }
            else
            {
                log.Endpoint   = ChainVisualization.TitleForChain(_currentChain.OriginatingChain);
                log.HttpMethod = "n/a";
            }

            log.ReportUrl = _urls.UrlFor(log);

            return(log);
        }
        public static string ToRelativeUrl(this ICurrentHttpRequest request, string url)
        {
            var requestUrl = request.RelativeUrl();

            if (requestUrl.IsEmpty() || requestUrl == "/")
            {
                return(url.TrimStart('/'));
            }

            var current    = requestUrl.TrimStart('/');
            var contentUrl = url.TrimStart('/');

            if (current == string.Empty)
            {
                return(contentUrl);
            }

            var prepend     = current.Split('/').Select(x => "..").Join("/");
            var relativeUrl = prepend.AppendUrl(contentUrl);

            return(relativeUrl);
        }
 public bool Write(AssetPath asset, Action <IEnumerable <AssetFile> > writeHeaders)
 {
     _cache.Enqueue(_request.RelativeUrl());
     return(_writer.Write(asset, writeHeaders));
 }