public bool OnBeforeResourceLoad(IWebBrowser browser, IRequestResponse requestResponse) { /* * Called on the IO thread before a resource is loaded. To allow the resource to load normally return false. * To redirect the resource to a new url populate the |redirectUrl| value and return false. * To specify data for the resource return a CefStream object in |resourceStream|, use the |response| object to set mime type, * HTTP status code and optional header values, and return false. To cancel loading of the resource return true. * Any modifications to |request| will be observed. If the URL in |request| is changed and |redirectUrl| is also set, * the URL in |request| will be used. */ if (requestResponse.Request.Url.StartsWith(m_InternalDomain)) { var requestUri = requestResponse.Request.Url.Replace(m_InternalDomain, String.Empty); HttpResponseMessage response = m_Server(requestUri); //TODO: Copy to separate memory stream so we can dispose of parent HttpResponseMessage var responseContent = response.Content.ReadAsStreamAsync().Result; var responseHeaders = response.Headers.ToDictionary(x => x.Key, x => x.Value.First()); var responseMime = response.IsSuccessStatusCode ? response.Content.Headers.ContentType.MediaType : "text/html"; //CEFSharp demands a MimeType of some kind... requestResponse.RespondWith(responseContent, responseMime, String.Empty, (int)response.StatusCode, responseHeaders); } return(false); }
public bool OnBeforeResourceLoad(IWebBrowser browser, IRequestResponse requestResponse) { /* * Called on the IO thread before a resource is loaded. To allow the resource to load normally return false. * To redirect the resource to a new url populate the |redirectUrl| value and return false. * To specify data for the resource return a CefStream object in |resourceStream|, use the |response| object to set mime type, * HTTP status code and optional header values, and return false. To cancel loading of the resource return true. * Any modifications to |request| will be observed. If the URL in |request| is changed and |redirectUrl| is also set, * the URL in |request| will be used. */ if (requestResponse.Request.Url.StartsWith(m_InternalDomain)) { var requestUri = requestResponse.Request.Url.Replace(m_InternalDomain, String.Empty); HttpResponseMessage response = m_Server(requestUri); //TODO: Copy to separate memory stream so we can dispose of parent HttpResponseMessage var responseContent = response.Content.ReadAsStreamAsync().Result; var responseHeaders = response.Headers.ToDictionary(x => x.Key, x => x.Value.First()); var responseMime = response.IsSuccessStatusCode ? response.Content.Headers.ContentType.MediaType : "text/html"; //CEFSharp demands a MimeType of some kind... requestResponse.RespondWith(responseContent, responseMime, String.Empty, (int) response.StatusCode, responseHeaders); } return false; }
public void HandleBeforeResourceLoad(ICefWebBrowser browserControl, IRequestResponse requestResponse) { IRequest request = requestResponse.Request; if (request.Url.StartsWith(testPagesBaseUrl)) { var url = request.Url.Substring(testPagesBaseUrl.Length); var stream = GetStream(url); requestResponse.RespondWith(stream, "text/html"); } }
public void HandleBeforeResourceLoad(IWebBrowser browserControl, IRequestResponse requestResponse) { IRequest request = requestResponse.Request; if(request.Url.StartsWith("http://test/resource/load")) { Stream resourceStream = new MemoryStream(Encoding.UTF8.GetBytes( "<html><body><h1>Success</h1><p>This document is loaded from a System.IO.Stream</p></body></html>")); requestResponse.RespondWith(resourceStream, "text/html"); } }
public void HandleBeforeResourceLoad(CefWebBrowser browserControl, IRequestResponse requestResponse) { IRequest request = requestResponse.Request; if (request.Url.StartsWith(testPagesBaseUrl)) { var url = request.Url.Substring(testPagesBaseUrl.Length); var stream = GetStream(url); requestResponse.RespondWith(stream, "text/html"); } }
public void HandleBeforeResourceLoad(CefWebBrowser browserControl, IRequestResponse requestResponse) { IRequest request = requestResponse.Request; if (request.Url.StartsWith("http://test/resource/load")) { Stream resourceStream = new MemoryStream(Encoding.UTF8.GetBytes( "<html><body><h1>Success</h1><p>This document is loaded from a System.IO.Stream</p></body></html>")); requestResponse.RespondWith(resourceStream, "text/html"); } Console.WriteLine(request.Url); }
bool IRequestHandler.OnBeforeResourceLoad(IWebBrowser browser, IRequestResponse requestResponse) { IRequest request = requestResponse.Request; if (request.Url.StartsWith(ResourceUrl.ToString())) { Stream resourceStream = new MemoryStream(Encoding.UTF8.GetBytes( "<html><body><h1>Success</h1><p>This document is loaded from a System.IO.Stream</p></body></html>")); requestResponse.RespondWith(resourceStream, "text/html"); } return false; }
bool IRequestHandler.OnBeforeResourceLoad(IWebBrowser browser, IRequestResponse requestResponse) { IRequest request = requestResponse.Request; if (request.Url.StartsWith(resource_url)) { Stream resourceStream = new MemoryStream(Encoding.UTF8.GetBytes( "<html><body><h1>Success</h1><p>This document is loaded from a System.IO.Stream</p></body></html>")); requestResponse.RespondWith(resourceStream, "text/html"); } return(false); }
bool IRequestHandler.OnBeforeResourceLoad(IWebBrowser browser, IRequestResponse requestResponse) { System.Diagnostics.Debug.WriteLine("OnBeforeResourceLoad"); IRequest request = requestResponse.Request; if (request.Url.EndsWith("header.png")) { MemoryStream stream = new System.IO.MemoryStream(); FileStream file = new FileStream(@"C:\tmp\header.png", FileMode.Open, FileAccess.Read, FileShare.Read); byte[] bytes = new byte[file.Length]; file.Read(bytes, 0, (int)file.Length); stream.Write(bytes, 0, (int)file.Length); file.Close(); requestResponse.RespondWith(stream, "image/png"); } return(false); }
public bool OnBeforeResourceLoad(IWebBrowser browser, IRequestResponse requestResponse) { IRequest request = requestResponse.Request; System.Diagnostics.Debug.WriteLine("OnBeforeResourceLoad - " + request.Url); if (!request.Url.StartsWith("res://")) { return(false); } string resourceName = request.Url.Substring(6).Replace("/", "."); try { var upperUrl = request.Url.ToUpperInvariant(); string content = ScriptHelper.ReadResource(resourceName); MemoryStream ms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(content)); string mime = "text/plain"; if (upperUrl.EndsWith("JS")) { mime = "application/javascript"; } else if (upperUrl.EndsWith("css")) { mime = "text/css"; } requestResponse.RespondWith(ms, mime); } catch { return(false); } return(false); }
bool IRequestHandler.OnBeforeResourceLoad(IWebBrowser browser, IRequestResponse requestResponse) { return(false); //System.Diagnostics.Debug.WriteLine("OnBeforeResourceLoad"); //var headers = request.GetHeaders(); string url = requestResponse.Request.Url; if (url.StartsWith("chrome-devtools://") == false) { if (brow_ImportPlugin == false && (url.Contains(".js") || url.Contains("/js/"))) { MemoryStream stream; byte[] bytes; switch (brow_Domain) { case DOMAIN_GOOGLE: case DOMAIN_BING: stream = new System.IO.MemoryStream(); bytes = ASCIIEncoding.ASCII.GetBytes(@"document.addEventListener('DOMContentLoaded', function (event) { var a = document.querySelectorAll('img'); for (var i = 0; i < a.length; i++) { a[i].remove(); }; console.log('DOM_CONTENT_LOADED'); }); "); stream.Write(bytes, 0, bytes.Length); requestResponse.RespondWith(stream, "text/javascript; charset=utf-8"); break; default: stream = new System.IO.MemoryStream(); FileStream file = new FileStream(@"plugin.js", FileMode.Open, FileAccess.Read, FileShare.Read); bytes = new byte[file.Length]; file.Read(bytes, 0, (int)file.Length); stream.Write(bytes, 0, (int)file.Length); file.Close(); requestResponse.RespondWith(stream, "text/javascript; charset=utf-8"); break; } Debug.WriteLine("----> JS === " + url); brow_ImportPlugin = true; return(false); } if (url.Contains(".js") || url.Contains("/js/") || url.Contains(brow_Domain) == false || url.Contains("font") || url.Contains(".svg") || url.Contains(".woff") || url.Contains(".ttf") || url.Contains("/image") || url.Contains(".png") || url.Contains(".jpeg") || url.Contains(".jpg") || url.Contains(".gif")) { Debug.WriteLine("----> " + url); return(true); } Debug.WriteLine(url); } #region ////IRequest request = requestResponse.Request; ////string url = request.Url, s = string.Empty; // MemoryStream stream; // byte[] bytes; // if (url.EndsWith(".mp4")) // { // string id = Path.GetFileName(url); // id = id.Substring(0, id.Length - 4); // string desUrl = string.Format("https://drive.google.com/uc?export=download&id={0}", id); // //stream = new System.IO.MemoryStream(); // ////bytes = System.Text.ASCIIEncoding.UTF8.GetBytes(""); // //FileStream file = new FileStream(@"E:\_cs\cef\cef_119_youtube\bin\x86\Debug\player\files\1.mp4", FileMode.Open, FileAccess.Read, FileShare.Read); // //bytes = new byte[file.Length]; // //file.Read(bytes, 0, (int)file.Length); // //file.Close(); // //stream.Write(bytes, 0, bytes.Length); // //requestResponse.RespondWith(stream, "video/mp4"); // desUrl = "https://r6---sn-8qj-i5oed.googlevideo.com/videoplayback?source=youtube&ms=au%2Crdu&mt=1526202288&mv=m&mm=31%2C29&mn=sn-8qj-i5oed%2Csn-i3b7kn7d&requiressl=yes&key=yt6&itag=22&mime=video%2Fmp4&ipbits=0&signature=CFA4FBAB6DAF7D4E1E6F8643865E06BD13C9B2C9.4AE8093B9CC164EE634F1465807AE309CB9EC5C3&dur=234.289&expire=1526223993&pl=20&ratebypass=yes&pcm2cms=yes&fvip=2&lmt=1510741625396835&id=o-APLwY1H9955dAWnARW0t1FTqsoCs-_OffF4spks0P2AQ&ei=GQD4WtupH4mngQOysI3oCw&c=WEB&initcwndbps=960000&sparams=dur%2Cei%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Clmt%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cpcm2cms%2Cpl%2Cratebypass%2Crequiressl%2Csource%2Cexpire&ip=14.177.123.70"; // requestResponse.Redirect(desUrl); // } // else // { // url = url.ToLower(); // #region // switch (url) // { // case "http://i.ytimg.com/crossdomain.xml": // case "https://drive.google.com/crossdomain.xml": // #region // stream = new MemoryStream(); // s = @"<?xml version=""1.0""?> //<!DOCTYPE cross-domain-policy SYSTEM //""http://www.adobe.com/xml/dtds/cross-domain-policy.dtd""> //<cross-domain-policy> // <site-control permitted-cross-domain-policies=""all""/> // <allow-access-from domain=""*"" secure=""false""/> // <allow-http-request-headers-from domain=""*"" headers=""*"" secure=""false""/> //</cross-domain-policy>"; // s = @"<cross-domain-policy><allow-access-from domain=""*"" /></cross-domain-policy>"; // bytes = ASCIIEncoding.UTF8.GetBytes(""); // stream.Write(bytes, 0, bytes.Length); // requestResponse.RespondWith(stream, "text/xml"); // #endregion // break; // case "http://l.longtailvideo.com/5/10/logo.png": // stream = new MemoryStream(); // bytes = new byte[] { 0 }; // stream.Write(bytes, 0, bytes.Length); // requestResponse.RespondWith(stream, "image/png"); // break; // case "http://www.youtube.com/apiplayer": // stream = new System.IO.MemoryStream(); // bytes = System.Text.ASCIIEncoding.UTF8.GetBytes(""); // stream.Write(bytes, 0, bytes.Length); // requestResponse.RespondWith(stream, "text/html; charset=utf-8"); // break; // } // ////if (request.Url.EndsWith("header.png")) // ////{ // //// MemoryStream stream = new System.IO.MemoryStream(); // //// FileStream file = new FileStream(@"C:\tmp\header.png", FileMode.Open, FileAccess.Read, FileShare.Read); // //// byte[] bytes = new byte[file.Length]; // //// file.Read(bytes, 0, (int)file.Length); // //// stream.Write(bytes, 0, (int)file.Length); // //// file.Close(); // //// requestResponse.RespondWith(stream, "image/png"); // ////} // #endregion // } #endregion return(false); }
public bool OnBeforeResourceLoad(IWebBrowser browser, IRequestResponse requestResponse) { Assembly asm = Assembly.GetExecutingAssembly(); string MIME = "application/octet-stream"; string requestURL = requestResponse.Request.Url, _lower = requestURL.ToLower(); if ((_lower == manifestProtocol + "postdata" || _lower.StartsWith(manifestProtocol + "postdata?")) && PostContentReceived != null) PostContentReceived(browser, new ContentReceivedEventArgs(requestResponse.Request.Body)); if (requestURL.Contains('?')) requestURL = requestURL.Substring(0, requestURL.IndexOf('?')); _lower = requestURL.ToLower(); if (_lower.StartsWith(manifestProtocol)) { if (_lower.EndsWith(".html") || _lower.EndsWith(".htm")) MIME = "text/html"; else if (_lower.EndsWith(".css")) MIME = "text/css"; else if (_lower.EndsWith(".js")) MIME = "text/javascript"; else if (_lower.EndsWith(".txt")) MIME = "text/plain"; requestURL = requestURL.Substring(manifestProtocol.Length); if (requestURL == "res/lang.js") requestURL = strings.script_path; requestURL = requestURL.Replace('/', '.').Replace(' ', '_'); try { requestResponse.RespondWith(asm.GetManifestResourceStream(asm.GetName().Name + "." + requestURL), MIME); } catch { } } return false; }
public void HandleBeforeResourceLoad(CefWebBrowser browserControl, IRequestResponse requestResponse) { IRequest request = requestResponse.Request; Console.WriteLine ("{0} {1}", request.Method, request.Url); if (request.Url.StartsWith ("application://sparkleshare/eventlog")) { Stream resourceStream; if (HTML != null) resourceStream = new MemoryStream (Encoding.UTF8.GetPreamble ().Concat (Encoding.UTF8.GetBytes (HTML)).ToArray ()); else resourceStream = new MemoryStream (); requestResponse.RespondWith (resourceStream, "text/html"); } else if (request.Url.StartsWith ("application://file/")) { string Filename = request.Url.Substring ("application://file/".Length); Filename = Uri.UnescapeDataString (Filename); Filename = Filename.Replace ("/", "\\"); if (Filename.StartsWith(SparkleConfig.DefaultConfig.FoldersPath)) System.Diagnostics.Process.Start (Filename); } }