Пример #1
0
        public void TestStream()
        {
            Request request = new Request(HttpMethod.Get, "https://www.google.com.tr/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png", new NameValueCollection(), new NameValueCollection());

            Core.Proxy proxy    = new Core.Proxy();
            var        response = proxy.Forward(request);

            Assert.IsNotNull(response);
            Assert.IsTrue(response.IsStream);
        }
Пример #2
0
        public void TestGoogle()
        {
            Request request = new Request(HttpMethod.Get, "http://www.google.com.tr", new NameValueCollection(), new NameValueCollection());

            Core.Proxy proxy    = new Core.Proxy();
            var        response = proxy.Forward(request);

            Assert.IsNotNull(response);
            Assert.IsTrue(!string.IsNullOrEmpty(response.Content));
        }
Пример #3
0
        public ActionResult Index()
        {
            var q = Request.QueryString["q"];

            if (string.IsNullOrEmpty(q))
            {
                return(View());
            }
            Uri  uri;
            bool validUrl = Uri.TryCreate(q, UriKind.Absolute, out uri) && (uri.Scheme == Uri.UriSchemeHttp || uri.Scheme == Uri.UriSchemeHttps);

            if (!validUrl)
            {
                return(View());
            }
            var decodedURL = HttpUtility.UrlDecode(q);

            Request.Headers.Remove("Host");
            var headers = new NameValueCollection();

            foreach (string requestHeader in Request.Headers)
            {
                headers.Add(requestHeader.ToLowerInvariant(), Request.Headers[requestHeader]);
            }

            var form = new NameValueCollection();

            foreach (string o in Request.Form)
            {
                form.Add(o, Request.Form[o]);
            }
            var files = new List <PostedFile>();

            foreach (string r in Request.Files)
            {
                var file        = new PostedFile();
                var requestFile = Request.Files[r];
                file.Name        = r;
                file.ContentType = requestFile.ContentType;
                file.FileName    = requestFile.FileName;
                using (var ms = new MemoryStream())
                {
                    requestFile.InputStream.CopyTo(ms);
                    file.Contents = ms.ToArray();
                }
                files.Add(file);
            }
            var request = new Request(new HttpMethod(Request.HttpMethod), decodedURL, headers, form)
            {
                Files = files
            };

            var _proxy = new Core.Proxy {
                AppURL = $"{Request.Url.Scheme}://{Request.Url.Authority}"
            };
            var response = _proxy.Forward(request);

            Response.StatusCode = response.HttpStatusCode.GetHashCode();
            foreach (string responseHeader in response.Headers)
            {
                Response.Headers.Set(responseHeader, response.Headers[responseHeader]);
            }

            Response.ContentType = response.Headers["content-type"];
            if (response.IsStream)
            {
                Response.OutputStream.Write(response.Bytes, 0, response.Bytes.Length);
            }
            else
            {
                Response.Output.Write(response.Content);
            }
            Response.OutputStream.Flush();


            return(null);
        }