Esempio n. 1
0
 private static void BuildRequestFromUri(Microsoft.Owin.OwinRequest request, Uri uri)
 {
     request.Host        = new Microsoft.Owin.HostString(uri.GetComponents(UriComponents.HostAndPort, UriFormat.Unescaped));
     request.PathBase    = new Microsoft.Owin.PathString(String.Empty);
     request.Path        = new Microsoft.Owin.PathString(uri.LocalPath);
     request.Scheme      = uri.Scheme;
     request.QueryString = new Microsoft.Owin.QueryString(uri.Query.Length > 0 ? uri.Query.Substring(1) : String.Empty);
 }
Esempio n. 2
0
        /// <summary>
        /// Invoke.
        /// </summary>
        /// <param name="environment"></param>
        /// <returns></returns>
        public async Task Invoke(IDictionary <string, object> environment)
        {
            await _next(environment);

            var request  = new Microsoft.Owin.OwinRequest(environment);
            var response = new Microsoft.Owin.OwinResponse(environment);

            if ((response.StatusCode >= 100 && response.StatusCode <= 199) || response.StatusCode == 204 || response.StatusCode == 304 || request.Method.Equals("HEAD", StringComparison.OrdinalIgnoreCase))
            {
                response.Body.Close();
                response.Body = System.IO.Stream.Null;
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Constrói a url para redirecionamento.
        /// </summary>
        /// <param name="response"></param>
        /// <returns></returns>
        private string BuildRedirectUrl(Microsoft.Owin.OwinResponse response)
        {
            string location = response.Headers.Get("Location");
            Uri    uri;

            if (Uri.TryCreate(location, UriKind.Relative, out uri))
            {
                var previousRequest = new Microsoft.Owin.OwinRequest(response.Environment);
                var uriBuilder      = new UriBuilder(previousRequest.Uri);
                uriBuilder.Path = location;
                return(uriBuilder.ToString());
            }
            return(location);
        }