X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=BrowserWindow.vala;h=366537da487c88dfff1af5f8e34929f3dea6582f;hb=fafb40436ce8bf70e89ac698954dab9559a6f58d;hp=e3485bf90ad4e9c0c39f0ec8eaa578b769e4b65a;hpb=0e2fb0237e314f9eb480f4eae0c61dfe838d1c6e;p=app.webkitpdf diff --git a/BrowserWindow.vala b/BrowserWindow.vala index e3485bf..366537d 100644 --- a/BrowserWindow.vala +++ b/BrowserWindow.vala @@ -4,7 +4,7 @@ public class BrowserWindow : Object { public Gtk.Window el; private BrowserWindow _this; - + public string cookie_file; public static BrowserWindow singleton() { if (_BrowserWindow == null) { @@ -32,72 +32,28 @@ public class BrowserWindow : Object //listeners this.el.destroy.connect( () => { + Gtk.main_quit(); }); this.el.show.connect( () => { - print("resizing window\n"); - var w = webkitpdf.opt_width > 0 ? webkitpdf.opt_width : 1200; - var h = webkitpdf.opt_height > 0 ? webkitpdf.opt_height : 500; + print("resizing window\n"); + var w = webkitpdf.opt_width > 0 ? webkitpdf.opt_width : 1200; + var h = webkitpdf.opt_height > 0 ? webkitpdf.opt_height : 500; - this.el.resize(w,h); + this.el.resize(w,h); - // we have to do silly stuff with blogspot!!?!? - var blog = webkitpdf.opt_url; + // we have to do silly stuff with blogspot!!?!? + var blog = webkitpdf.opt_url; - /* Do not redirect if the domain is .com already */ - if (/\.blogspot\.com/.match(blog)) { + /* Do not redirect if the domain is .com already */ + if (/\.blogspot\.com/.match(blog)) { var r = new Regex ("\\.blogspot\\..*?/"); blog = r.replace(blog, blog.length, 0, ".blogspot.com/ncr/"); - } - - var filename=""; - - if(webkitpdf.opt_cookies != null) { - print("setting cookie %s\n",webkitpdf.opt_cookies); - - var uri = new Soup.URI (blog); - - string[] cookies = webkitpdf.opt_cookies.split ("=", 2); - - if(cookies.length >=2 ) { -#if GTK3 - var context = WebKit.WebContext.get_default(); - var cookie_manager = context.get_cookie_manager(); - cookie_manager.set_accept_policy(WebKit.CookieAcceptPolicy.NEVER); - string scheme = uri.get_scheme (); - var ssl = "FALSE"; - if (scheme=="https") { - ssl="TRUE"; - } - try { - FileIOStream iostream; - File file = File.new_tmp ("cookie-XXXXXX.txt", out iostream); - filename = file.get_path (); - print("cookie tmp file name: %s\n", file.get_path ()); - - OutputStream ostream = iostream.output_stream; - DataOutputStream dostream = new DataOutputStream (ostream); - - dostream.put_string (uri.get_host() + "\tTRUE\t/\t"+ssl+"\t2147483647\t" + cookies[0] + "\t" + cookies[1] ); - cookie_manager.set_persistent_storage(file.get_path(), WebKit.CookiePersistentStorage.TEXT); - } catch (Error e) { - stdout.printf ("Error: %s\n", e.message); - } -#else - var sess = WebKit.get_default_session(); - var cookie_jar = new Soup.CookieJar(); - cookie_jar.set_accept_policy(Soup.CookieJarAcceptPolicy.NEVER); - cookie_jar.add_cookie(new Soup.Cookie (cookies[0], cookies[1], uri.get_host(), "/", -1)); - sess.add_feature(cookie_jar); -#endif - } - - - } - + } + print("loading url %s\n",blog); this.view.el.load_uri(blog); @@ -108,21 +64,15 @@ public class BrowserWindow : Object cd--; print("timeout 25 seconds :%d", cd); if (cd < 1) { - print("calling printit - timed out"); - _this.view.printit(); - return false; + print("calling printit - timed out"); + _this.view.printit(); + + return false; } return true; }); - try { - print("deleting cookie tmp file name: %s\n", file.get_path ()); - - } catch (Error e) { - stdout.printf ("Error: %s\n", e.message); - } - }); } @@ -168,7 +118,8 @@ public class BrowserWindow : Object // my vars (def) public bool print_started; public int load_try; - + public string cookie_file; + // ctor public Xcls_view(BrowserWindow _owner ) { @@ -182,7 +133,54 @@ public class BrowserWindow : Object // set gobject values + // setting up cookie injection + this.cookie_file =""; + if(webkitpdf.opt_cookies != null) { + print("setting cookie %s\n",webkitpdf.opt_cookies); + + var uri = new Soup.URI (webkitpdf.opt_url); + + string[] cookies = webkitpdf.opt_cookies.split ("=", 2); + + if(cookies.length > 1 ) { + + #if GTK3 + var context = WebKit.WebContext.get_default(); + var cookie_manager = context.get_cookie_manager(); + cookie_manager.set_accept_policy(WebKit.CookieAcceptPolicy.NEVER); + string scheme = uri.get_scheme (); + + try { + FileIOStream iostream; + File file = File.new_tmp ("cookie-XXXXXX.txt", out iostream); + this.cookie_file = file.get_path (); + print("cookie tmp file name: %s\n", file.get_path ()); + + OutputStream ostream = iostream.output_stream; + DataOutputStream dostream = new DataOutputStream (ostream); + dostream.put_string ("%s\tTRUE\t/\t%s\t2147483647\t%s\t%s".printf(uri.get_host(),scheme == "http" ? "FALSE" : "TRUE",cookies[0],cookies[1])); + cookie_manager.set_persistent_storage(file.get_path(), WebKit.CookiePersistentStorage.TEXT); + } catch (Error e) { + stdout.printf ("Error: %s\n", e.message); + } + #else + var sess = WebKit.get_default_session(); + var cookie_jar = new Soup.CookieJar(); + var cookie = new Soup.Cookie (cookies[0], cookies[1], uri.get_host(), "/", -1); + if(uri.get_scheme () =="https") { + cookie.set_secure(true); + } + cookie_jar.set_accept_policy(Soup.CookieJarAcceptPolicy.NEVER); + cookie_jar.add_cookie(cookie); + sess.add_feature(cookie_jar); + #endif + + } + + } // init method + + { this.load_try = 0; @@ -259,6 +257,7 @@ public class BrowserWindow : Object } print("calling print in %d seconds\n", (int)webkitpdf.opt_delay); + if (webkitpdf.opt_target_pdf != null) { GLib.Timeout.add_seconds(webkitpdf.opt_delay, () => { print("delay done URL: %s\n", this.el.uri); @@ -324,6 +323,7 @@ public class BrowserWindow : Object pe.set_page_setup(psetup); pe.finished.connect( () => { print("print completed\n"); + this.delete_cookiefile(); Gtk.main_quit(); }); @@ -353,6 +353,7 @@ public class BrowserWindow : Object */; pe.done.connect(() => { print("print completed\n"); + this.delete_cookiefile(); Gtk.main_quit(); }); @@ -422,6 +423,21 @@ public class BrowserWindow : Object + } + + public void delete_cookiefile () { + + if(this.cookie_file.length >0 ){ + print("deleting tmp file %s\n",this.cookie_file); + File file = File.new_for_path (this.cookie_file); + try { + if (file.query_exists () == true) { + file.delete (); + } + } catch (Error e) { + stdout.printf ("Error: %s\n", e.message); + } + } } }