Exemplo n.º 1
0
        public Task Invoke(IDictionary<string, object> env)
        {
            var request = new Gate.Request(env);

            string userToken;
            string userId;
            if (request.Cookies.TryGetValue(Constants.UserTokenCookie, out userToken) &&
                _authenticationTokenService.TryGetUserId(userToken, out userId))
            {
                env["server.User"] = new GenericPrincipal(new GenericIdentity(userId), new string[0]);
            }

            return _next(env);
        }
Exemplo n.º 2
0
        public Task Invoke(IDictionary <string, object> env)
        {
            var request = new Gate.Request(env);

            string userToken;
            string userId;

            if (request.Cookies.TryGetValue(Constants.UserTokenCookie, out userToken) &&
                _authenticationTokenService.TryGetUserId(userToken, out userId))
            {
                env["server.User"] = new GenericPrincipal(new GenericIdentity(userId), new string[0]);
            }

            return(_next(env));
        }
Exemplo n.º 3
0
        public async Task Invoke(IDictionary <string, object> env)
        {
            var httpRequest  = new Gate.Request(env);
            var httpResponse = new OwinResponse(env);

            string url;
            Uri    uri;

            if (!httpRequest.Query.TryGetValue("url", out url) ||
                String.IsNullOrEmpty(url) ||
                !Uri.TryCreate(url, UriKind.Absolute, out uri) ||
                !ImageContentProvider.IsValidImagePath(uri) ||
                !IsAuthenticated(env))
            {
                httpResponse.StatusCode = 404;
                return;
            }

            try
            {
                var request = (HttpWebRequest)WebRequest.Create(url);
                request.CachePolicy = new RequestCachePolicy(RequestCacheLevel.Default);
                var response = (HttpWebResponse)await request.GetResponseAsync();

                if (!ImageContentProvider.IsValidContentType(response.ContentType) &&
                    response.ContentLength > _settings.ProxyImageMaxSizeBytes)
                {
                    httpResponse.StatusCode = 404;
                    return;
                }

                httpResponse.SetHeader("Content-Type", response.ContentType);
                httpResponse.StatusCode = (int)response.StatusCode;

                using (response)
                {
                    using (Stream stream = response.GetResponseStream())
                    {
                        await stream.CopyToAsync(httpResponse.Body);
                    }
                }
            }
            catch
            {
                httpResponse.StatusCode = 404;
            }
        }
Exemplo n.º 4
0
        public async Task Invoke(IDictionary<string, object> env)
        {
            var httpRequest = new Gate.Request(env);
            var httpResponse = new OwinResponse(env);

            string url;
            Uri uri;
            if (!httpRequest.Query.TryGetValue("url", out url) ||
                String.IsNullOrEmpty(url) ||
                !Uri.TryCreate(url, UriKind.Absolute, out uri) ||
                !ImageContentProvider.IsValidImagePath(uri) ||
                !IsAuthenticated(env))
            {
                httpResponse.StatusCode = 404;
                return;
            }

            try
            {
                var request = (HttpWebRequest)WebRequest.Create(url);
                request.CachePolicy = new RequestCachePolicy(RequestCacheLevel.Default);
                var response = (HttpWebResponse)await request.GetResponseAsync();

                if (!ImageContentProvider.IsValidContentType(response.ContentType) &&
                    response.ContentLength > _settings.ProxyImageMaxSizeBytes)
                {
                    httpResponse.StatusCode = 404;
                    return;
                }

                httpResponse.SetHeader("Content-Type", response.ContentType);
                httpResponse.StatusCode = (int)response.StatusCode;

                using (response)
                {
                    using (Stream stream = response.GetResponseStream())
                    {
                        await stream.CopyToAsync(httpResponse.Body);
                    }
                }
            }
            catch
            {
                httpResponse.StatusCode = 404;
            }
        }
Exemplo n.º 5
0
        public Task Invoke(IDictionary<string, object> env)
        {
            var request = new Gate.Request(env);

            var authenticationService = _kernel.Get<IAuthenticationService>();
            try
            {
                string userToken;
                string userId;
                if (request.Cookies.TryGetValue(Constants.UserTokenCookie, out userToken) &&
                    authenticationService.TryGetUserId(userToken, out userId))
                {
                    env["server.User"] = new GenericPrincipal(new GenericIdentity(userId), new string[0]);
                }
            }
            finally
            {
                authenticationService.Dispose();
            }

            return _next(env);
        }
Exemplo n.º 6
0
        public Task Invoke(IDictionary <string, object> env)
        {
            var request = new Gate.Request(env);

            var authenticationService = _kernel.Get <IAuthenticationService>();

            try
            {
                string userToken;
                string userId;
                if (request.Cookies.TryGetValue(Constants.UserTokenCookie, out userToken) &&
                    authenticationService.TryGetUserId(userToken, out userId))
                {
                    env["server.User"] = new GenericPrincipal(new GenericIdentity(userId), new string[0]);
                }
            }
            finally
            {
                authenticationService.Dispose();
            }

            return(_next(env));
        }