diff options
author | keis <keijser@gmail.com> | 2010-11-30 21:45:57 +0100 |
---|---|---|
committer | keis <keijser@gmail.com> | 2010-12-13 04:12:12 +0100 |
commit | 04a5223d6abb42c42acc31c8b50ed11a049c59db (patch) | |
tree | ed58aa252203bf38e25567db9d0ce4baf0a561d6 /src/uzbl-core.c | |
parent | b9ab642298cba8e6a0aeb69a4ad427d679cdb5c2 (diff) |
cookies rework
* send events on cookie changes
* add command to add a new cookie
parses same syntax as events
no ADD_COOKIE event is raised for these cookies
* add command to delete a cookie
parses same syntax as events, ignoring everything after 5th argument
no DELETE_COOKIE event is raised for these cookies
Diffstat (limited to 'src/uzbl-core.c')
-rw-r--r-- | src/uzbl-core.c | 55 |
1 files changed, 54 insertions, 1 deletions
diff --git a/src/uzbl-core.c b/src/uzbl-core.c index 1fc8593..eb340e0 100644 --- a/src/uzbl-core.c +++ b/src/uzbl-core.c @@ -613,7 +613,9 @@ struct {const char *key; CommandInfo value;} cmdlist[] = { "menu_editable_remove", {menu_remove_edit, TRUE} }, { "hardcopy", {hardcopy, TRUE} }, { "include", {include, TRUE} }, - { "show_inspector", {show_inspector, 0} } + { "show_inspector", {show_inspector, 0} }, + { "add_cookie", {add_cookie, 0} }, + { "delete_cookie", {delete_cookie, 0} } }; void @@ -908,6 +910,57 @@ show_inspector(WebKitWebView *page, GArray *argv, GString *result) { } void +add_cookie(WebKitWebView *page, GArray *argv, GString *result) { + (void) page; (void) result; + gchar *host, *path, *name, *value; + gboolean http_only = 0, secure = 0; + SoupDate *expires = NULL; + + if(argv->len != 6) + return; + + // Parse with same syntax as ADD_COOKIE event + host = argv_idx (argv, 0); + path = argv_idx (argv, 1); + name = argv_idx (argv, 2); + value = argv_idx (argv, 3); + secure = strcmp (argv_idx (argv, 4), "https") == 0; + if (strlen (argv_idx (argv, 5)) != 0) + expires = soup_date_new_from_time_t ( + strtoul (argv_idx (argv, 5), NULL, 10)); + + // Create new cookie + SoupCookie * cookie = soup_cookie_new (name, value, host, path, -1); + soup_cookie_set_secure (cookie, secure); + if (expires) + soup_cookie_set_expires (cookie, expires); + + // Add cookie to jar + uzbl.net.soup_cookie_jar->in_manual_add = 1; + soup_cookie_jar_add_cookie (SOUP_COOKIE_JAR (uzbl.net.soup_cookie_jar), cookie); + uzbl.net.soup_cookie_jar->in_manual_add = 0; +} + +void +delete_cookie(WebKitWebView *page, GArray *argv, GString *result) { + (void) page; (void) result; + + if(argv->len < 4) + return; + + SoupCookie * cookie = soup_cookie_new ( + argv_idx (argv, 2), + argv_idx (argv, 3), + argv_idx (argv, 0), + argv_idx (argv, 1), + 0); + + uzbl.net.soup_cookie_jar->in_manual_add = 1; + soup_cookie_jar_delete_cookie (SOUP_COOKIE_JAR (uzbl.net.soup_cookie_jar), cookie); + uzbl.net.soup_cookie_jar->in_manual_add = 0; +} + +void act_dump_config() { dump_config(); } |