Advertisement
Guest User

Untitled

a guest
Jul 16th, 2017
2,015
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.09 KB | None | 0 0
  1. public class MyRequestHandler : IRequestHandler
  2. {
  3. private string userName;
  4. private string password;
  5.  
  6. public MyRequestHandler(string userName, string password)
  7. {
  8. this.userName = userName;
  9. this.password = password;
  10. }
  11.  
  12.  
  13. //public static readonly string VersionNumberString = String.Format("Chromium: {0}, CEF: {1}, CefSharp: {2}",
  14. // Cef.ChromiumVersion, Cef.CefVersion, Cef.CefSharpVersion);
  15.  
  16. bool IRequestHandler.OnBeforeBrowse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, bool isRedirect)
  17. {
  18. return false;
  19. }
  20.  
  21. bool IRequestHandler.OnOpenUrlFromTab(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, WindowOpenDisposition targetDisposition, bool userGesture)
  22. {
  23. return OnOpenUrlFromTab(browserControl, browser, frame, targetUrl, targetDisposition, userGesture);
  24. }
  25.  
  26. protected virtual bool OnOpenUrlFromTab(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, WindowOpenDisposition targetDisposition, bool userGesture)
  27. {
  28. return false;
  29. }
  30.  
  31. bool IRequestHandler.OnCertificateError(IWebBrowser browserControl, IBrowser browser, CefErrorCode errorCode, string requestUrl, ISslInfo sslInfo, IRequestCallback callback)
  32. {
  33. //NOTE: If you do not wish to implement this method returning false is the default behaviour
  34. // We also suggest you explicitly Dispose of the callback as it wraps an unmanaged resource.
  35. //callback.Dispose();
  36. //return false;
  37.  
  38. //NOTE: When executing the callback in an async fashion need to check to see if it's disposed
  39. //if (!callback.IsDisposed)
  40. //{
  41. // using (callback)
  42. // {
  43. // //To allow certificate
  44. // //callback.Continue(true);
  45. // //return true;
  46. // }
  47. //}
  48.  
  49. return false;
  50. }
  51.  
  52. void IRequestHandler.OnPluginCrashed(IWebBrowser browserControl, IBrowser browser, string pluginPath)
  53. {
  54. // TODO: Add your own code here for handling scenarios where a plugin crashed, for one reason or another.
  55. }
  56.  
  57. CefReturnValue IRequestHandler.OnBeforeResourceLoad(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback)
  58. {
  59. //Example of how to set Referer
  60. // Same should work when setting any header
  61.  
  62. // For this example only set Referer when using our custom scheme
  63. //var url = new Uri(request.Url);
  64. //if (url.Scheme == CefSharpSchemeHandlerFactory.SchemeName)
  65. //{
  66. // //Referrer is now set using it's own method (was previously set in headers before)
  67. // request.SetReferrer("http://google.com", ReferrerPolicy.Default);
  68. //}
  69.  
  70. //Example of setting User-Agent in every request.
  71. //var headers = request.Headers;
  72.  
  73. //var userAgent = headers["User-Agent"];
  74. //headers["User-Agent"] = userAgent + " CefSharp";
  75.  
  76. //request.Headers = headers;
  77.  
  78. //NOTE: If you do not wish to implement this method returning false is the default behaviour
  79. // We also suggest you explicitly Dispose of the callback as it wraps an unmanaged resource.
  80. //callback.Dispose();
  81. //return false;
  82.  
  83. //NOTE: When executing the callback in an async fashion need to check to see if it's disposed
  84. //if (!callback.IsDisposed)
  85. //{
  86. // using (callback)
  87. // {
  88. // if (request.Method == "POST")
  89. // {
  90. // using (var postData = request.PostData)
  91. // {
  92. // if (postData != null)
  93. // {
  94. // var elements = postData.Elements;
  95.  
  96. // var charSet = request.GetCharSet();
  97.  
  98. // foreach (var element in elements)
  99. // {
  100. // if (element.Type == PostDataElementType.Bytes)
  101. // {
  102. // var body = element.GetBody(charSet);
  103. // }
  104. // }
  105. // }
  106. // }
  107. // }
  108.  
  109. // //Note to Redirect simply set the request Url
  110. // //if (request.Url.StartsWith("https://www.google.com", StringComparison.OrdinalIgnoreCase))
  111. // //{
  112. // // request.Url = "https://github.com/";
  113. // //}
  114.  
  115. // //Callback in async fashion
  116. // //callback.Continue(true);
  117. // //return CefReturnValue.ContinueAsync;
  118. // }
  119. //}
  120.  
  121. return CefReturnValue.Continue;
  122. }
  123.  
  124. bool IRequestHandler.GetAuthCredentials(IWebBrowser browserControl, IBrowser browser, IFrame frame, bool isProxy, string host, int port, string realm, string scheme, IAuthCallback callback)
  125. {
  126. //NOTE: If you do not wish to implement this method returning false is the default behaviour
  127. // We also suggest you explicitly Dispose of the callback as it wraps an unmanaged resource.
  128. if (isProxy == true)
  129. {
  130. //throw new NotImplementedException();
  131.  
  132. callback.Continue(userName, password);
  133.  
  134. return true;
  135. }
  136.  
  137. return false;
  138. }
  139.  
  140. void IRequestHandler.OnRenderProcessTerminated(IWebBrowser browserControl, IBrowser browser, CefTerminationStatus status)
  141. {
  142. // TODO: Add your own code here for handling scenarios where the Render Process terminated for one reason or another.
  143. // browserControl.Load(CefExample.RenderProcessCrashedUrl);
  144. }
  145.  
  146. bool IRequestHandler.OnQuotaRequest(IWebBrowser browserControl, IBrowser browser, string originUrl, long newSize, IRequestCallback callback)
  147. {
  148. //NOTE: If you do not wish to implement this method returning false is the default behaviour
  149. // We also suggest you explicitly Dispose of the callback as it wraps an unmanaged resource.
  150. //callback.Dispose();
  151. //return false;
  152.  
  153. //NOTE: When executing the callback in an async fashion need to check to see if it's disposed
  154. //if (!callback.IsDisposed)
  155. //{
  156. // using (callback)
  157. // {
  158. // //Accept Request to raise Quota
  159. // //callback.Continue(true);
  160. // //return true;
  161. // }
  162. //}
  163.  
  164. return false;
  165. }
  166.  
  167. void IRequestHandler.OnResourceRedirect(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, ref string newUrl)
  168. {
  169. //Example of how to redirect - need to check `newUrl` in the second pass
  170. //if (string.Equals(frame.GetUrl(), "https://www.google.com/", StringComparison.OrdinalIgnoreCase) && !newUrl.Contains("github"))
  171. //{
  172. // newUrl = "https://github.com";
  173. //}
  174. }
  175.  
  176. bool IRequestHandler.OnProtocolExecution(IWebBrowser browserControl, IBrowser browser, string url)
  177. {
  178. return url.StartsWith("mailto");
  179. }
  180.  
  181. void IRequestHandler.OnRenderViewReady(IWebBrowser browserControl, IBrowser browser)
  182. {
  183.  
  184. }
  185.  
  186. bool IRequestHandler.OnResourceResponse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response)
  187. {
  188. //NOTE: You cannot modify the response, only the request
  189. // You can now access the headers
  190. //var headers = response.ResponseHeaders;
  191.  
  192. return false;
  193. }
  194.  
  195. IResponseFilter IRequestHandler.GetResourceResponseFilter(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response)
  196. {
  197. //var url = new Uri(request.Url);
  198. //if (url.Scheme == CefSharpSchemeHandlerFactory.SchemeName)
  199. //{
  200. // if (request.Url.Equals(CefExample.ResponseFilterTestUrl, StringComparison.OrdinalIgnoreCase))
  201. // {
  202. // return new FindReplaceResponseFilter("REPLACE_THIS_STRING", "This is the replaced string!");
  203. // }
  204.  
  205. // if (request.Url.Equals("custom://cefsharp/assets/js/jquery.js", StringComparison.OrdinalIgnoreCase))
  206. // {
  207. // return new AppendResponseFilter(System.Environment.NewLine + "//CefSharp Appended this comment.");
  208. // }
  209.  
  210. // return new PassThruResponseFilter();
  211. //}
  212.  
  213. return null;
  214. }
  215.  
  216. void IRequestHandler.OnResourceLoadComplete(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response, UrlRequestStatus status, long receivedContentLength)
  217. {
  218.  
  219. }
  220. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement