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); }
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)); }
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); }