public static bool IsFileHandlerActivationRequest(Microsoft.Owin.IOwinRequest request, out FileHandlerActivationParameters activationParameters)
        {
            activationParameters = null;

            var formTask = request.ReadFormAsync();

            formTask.RunSynchronously();
            var formData = formTask.Result;

            if (formData != null && formData.Any())
            {
                activationParameters = new FileHandlerActivationParameters(null);
                return(true);
            }
            else
            {
                var persistedRequestData = CookieStorage.Load(request.Cookies);
                if (null != persistedRequestData)
                {
                    activationParameters = new FileHandlerActivationParameters(persistedRequestData);
                    return(true);
                }
            }
            return(false);
        }
        public static bool IsFileHandlerActivationRequest(Microsoft.Owin.IOwinRequest request, out FileHandlerActivationParameters activationParameters)
        {
            activationParameters = null;

            var formTask = request.ReadFormAsync();

            formTask.RunSynchronously();
            var formData = formTask.Result;

            if (formData != null && formData.Any())
            {
                // Get from current request's form data
                activationParameters = new FileHandlerActivationParameters(null);
                return(true);
            }
            else
            {
                // If form data does not exist, it must be because of the sign in redirection.
                // Read the cookie we saved before the redirection in RedirectToIdentityProvider callback in Startup.Auth.cs
                var persistedRequestData = CookieStorage.Load(request.Cookies);
                if (null != persistedRequestData)
                {
                    activationParameters = new FileHandlerActivationParameters(persistedRequestData);
                    return(true);
                }
            }
            return(false);
        }
Esempio n. 3
0
        /// <summary>
        /// Construtor padrão.
        /// </summary>
        /// <param name="context"></param>
        /// <param name="request"></param>
        public HttpRequest(HttpContext context, Microsoft.Owin.IOwinRequest request)
        {
            _context = context;
            _request = request;
            _headers = request.Headers.GetNameValueCollection();
            _files   = new HttpFileCollection();
            var allDone = new System.Threading.ManualResetEvent(false);

            _httpClient = new HttpClient(request);
            _httpClient.RequestExecuting += (sender, e) => {
                allDone.Set();
            };
            _httpClient.Disposing += (sender, e) => {
                allDone.Set();
            };
            _httpClient.Reset();
            foreach (KeyValuePair <string, string[]> i in request.Headers)
            {
                _httpClient.Headers.Add(i.Key, i.Value.FirstOrDefault());
            }
            _httpClient.State = HttpClient.ClientState.ReadingContent;
            _httpClient.BeginRequest();
            allDone.WaitOne();
            if (_httpClient.PostParameters != null)
            {
                _form = _httpClient.PostParameters;
            }
            if (_httpClient.MultiPartItems != null)
            {
                ParseMultiPartItems(_httpClient);
            }
            _queryString = request.Query.GetNameValueCollection();
            _cookies     = request.Cookies.GetCookieCollection();
        }
        /// <inheritdoc cref="IOwinRequestMapper.MapAsync"/>
        public async Task <RequestMessage> MapAsync(IRequest request, IWireMockMiddlewareOptions options)
        {
            (UrlDetails urldetails, string clientIP) = ParseRequest(request);

            string method = request.Method;

            Dictionary <string, string[]> headers = null;
            IEnumerable <string>          contentEncodingHeader = null;

            if (request.Headers.Any())
            {
                headers = new Dictionary <string, string[]>();
                foreach (var header in request.Headers)
                {
                    headers.Add(header.Key, header.Value);

                    if (string.Equals(header.Key, HttpKnownHeaderNames.ContentEncoding, StringComparison.OrdinalIgnoreCase))
                    {
                        contentEncodingHeader = header.Value;
                    }
                }
            }

            IDictionary <string, string> cookies = null;

            if (request.Cookies.Any())
            {
                cookies = new Dictionary <string, string>();
                foreach (var cookie in request.Cookies)
                {
                    cookies.Add(cookie.Key, cookie.Value);
                }
            }

            BodyData body = null;

            if (request.Body != null && BodyParser.ShouldParseBody(method, options.AllowBodyForAllHttpMethods == true))
            {
                var bodyParserSettings = new BodyParserSettings
                {
                    Stream                   = request.Body,
                    ContentType              = request.ContentType,
                    DeserializeJson          = !options.DisableJsonBodyParsing.GetValueOrDefault(false),
                    ContentEncoding          = contentEncodingHeader?.FirstOrDefault(),
                    DecompressGZipAndDeflate = !options.DisableRequestBodyDecompressing.GetValueOrDefault(false)
                };

                body = await BodyParser.Parse(bodyParserSettings);
            }

            return(new RequestMessage(urldetails, method, clientIP, body, headers, cookies)
            {
                DateTime = DateTime.UtcNow
            });
        }
Esempio n. 5
0
        public static Microsoft.Owin.IOwinRequest EnableRewind(this Microsoft.Owin.IOwinRequest request, int bufferThreshold = DefaultBufferThreshold)
        {
            var body = request.Body;

            if (!body.CanSeek)
            {
                // TODO: Register this buffer for disposal at the end of the request to ensure the temp file is deleted.
                //  Otherwise it won't get deleted until GC closes the stream.
                request.Body = new FileBufferingReadStream(body, bufferThreshold, TempDirectory);
            }
            return(request);
        }
        private (UrlDetails UrlDetails, string ClientIP) ParseRequest(IRequest request)
        {
#if !USE_ASPNETCORE
            var    urldetails = UrlUtils.Parse(request.Uri, request.PathBase);
            string clientIP   = request.RemoteIpAddress;
#else
            var    urldetails = UrlUtils.Parse(new Uri(request.GetEncodedUrl()), request.PathBase);
            var    connection = request.HttpContext.Connection;
            string clientIP   = connection.RemoteIpAddress.IsIPv4MappedToIPv6
                ? connection.RemoteIpAddress.MapToIPv4().ToString()
                : connection.RemoteIpAddress.ToString();
#endif
            return(urldetails, clientIP);
        }
Esempio n. 7
0
        /// <inheritdoc cref="IOwinRequestMapper.MapAsync"/>
        public async Task <RequestMessage> MapAsync(IRequest request, IWireMockMiddlewareOptions options)
        {
            (UrlDetails urldetails, string clientIP) = ParseRequest(request);

            string method = request.Method;

            Dictionary <string, string[]> headers = null;

            if (request.Headers.Any())
            {
                headers = new Dictionary <string, string[]>();
                foreach (var header in request.Headers)
                {
                    headers.Add(header.Key, header.Value);
                }
            }

            IDictionary <string, string> cookies = null;

            if (request.Cookies.Any())
            {
                cookies = new Dictionary <string, string>();
                foreach (var cookie in request.Cookies)
                {
                    cookies.Add(cookie.Key, cookie.Value);
                }
            }

            BodyData body = null;

            if (request.Body != null && BodyParser.ShouldParseBody(method, options.AllowBodyForAllHttpMethods == true))
            {
                body = await BodyParser.Parse(request.Body, request.ContentType, !options.DisableJsonBodyParsing.GetValueOrDefault(false));
            }

            return(new RequestMessage(urldetails, method, clientIP, body, headers, cookies)
            {
                DateTime = DateTime.UtcNow
            });
        }
Esempio n. 8
0
        /// <inheritdoc cref="IOwinRequestMapper.MapAsync"/>
        public async Task <RequestMessage> MapAsync(IRequest request)
        {
            (UrlDetails urldetails, string clientIP) = ParseRequest(request);

            string method = request.Method;

            Dictionary <string, string[]> headers = null;

            if (request.Headers.Any())
            {
                headers = new Dictionary <string, string[]>();
                foreach (var header in request.Headers)
                {
                    headers.Add(header.Key, header.Value);
                }
            }

            IDictionary <string, string> cookies = null;

            if (request.Cookies.Any())
            {
                cookies = new Dictionary <string, string>();
                foreach (var cookie in request.Cookies)
                {
                    cookies.Add(cookie.Key, cookie.Value);
                }
            }

            BodyData body = null;

            if (request.Body != null && BodyParser.ShouldParseBody(method))
            {
                body = await BodyParser.Parse(request.Body, request.ContentType);
            }

            return(new RequestMessage(urldetails, method, clientIP, body, headers, cookies)
            {
                DateTime = DateTime.UtcNow
            });
        }
Esempio n. 9
0
        private static bool IsApiRequest(Microsoft.Owin.IOwinRequest request)
        {
            string apiPath = VirtualPathUtility.ToAbsolute("~/api/");

            return(request.Uri.LocalPath.StartsWith(apiPath));
        }
Esempio n. 10
0
 public HttpRequest(Microsoft.Owin.IOwinRequest request)
 {
     _request = request;
 }
Esempio n. 11
0
 /// <summary>
 /// Construtor padrão.
 /// </summary>
 /// <param name="request"></param>
 public HttpClient(Microsoft.Owin.IOwinRequest request)
 {
     ReadBuffer   = new HttpReadBuffer(2048);
     _writeBuffer = new byte[2048];
     _stream      = request.Body;
 }
Esempio n. 12
0
 public HttpRequest(Microsoft.Owin.IOwinRequest request)
 {
     _request = request;
 }