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;
        }
예제 #3
0
 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");
     }
 }
예제 #4
0
파일: Browser.cs 프로젝트: boydlee/CefSharp
 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");
     }
 }
예제 #5
0
        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");
            }
        }
예제 #6
0
        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);
        }
예제 #7
0
        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;
        }
예제 #8
0
        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);
        }
예제 #9
0
    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);
        }
예제 #11
0
        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;
 }
예제 #13
0
        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);
            }
        }