mirror of
https://git.checksum.fail/alec/erythros
synced 2025-12-10 13:09:55 +02:00
Applications/Internet/Cyberia: Persist cookies (and soon, bookmarks) to disk
This commit is contained in:
@@ -1,8 +1,21 @@
|
||||
CTask* browser_task = Fs;
|
||||
|
||||
#define CYBERIA_BOOKMARKS_FILE "A:/Tmp/Bookmarks.json"
|
||||
#define CYBERIA_COOKIES_FILE "A:/Tmp/Cookies.json"
|
||||
|
||||
JsonObject* cyberia = Json.CreateObject(Fs);
|
||||
cyberia->set("bookmarks", Json.CreateObject(Fs), JSON_OBJECT);
|
||||
cyberia->set("cookies", Json.CreateObject(Fs), JSON_OBJECT);
|
||||
|
||||
if (FileFind(CYBERIA_BOOKMARKS_FILE)) {
|
||||
cyberia->set("bookmarks", Json.ParseFile(CYBERIA_BOOKMARKS_FILE, Fs), JSON_OBJECT);
|
||||
} else {
|
||||
cyberia->set("bookmarks", Json.CreateObject(Fs), JSON_OBJECT);
|
||||
}
|
||||
|
||||
if (FileFind(CYBERIA_COOKIES_FILE)) {
|
||||
cyberia->set("cookies", Json.ParseFile(CYBERIA_COOKIES_FILE, Fs), JSON_OBJECT);
|
||||
} else {
|
||||
cyberia->set("cookies", Json.CreateObject(Fs), JSON_OBJECT);
|
||||
}
|
||||
|
||||
Context2D* APP_ICON = @image_file_to_context2d("M:/Applications/Internet/Cyberia.app/Resources/icon.png");
|
||||
|
||||
@@ -574,6 +587,7 @@ U0 @cyberia_set_cookies(@browser* browser, @http_response* resp)
|
||||
U8* value = NULL;
|
||||
JsonArray* a = NULL;
|
||||
JsonKey* keys = resp->headers->keys;
|
||||
Bool did_set_cookie = FALSE;
|
||||
while (keys) {
|
||||
if (!StrICmp(keys->name, "set-cookie")) {
|
||||
switch (keys->type) {
|
||||
@@ -587,9 +601,13 @@ U0 @cyberia_set_cookies(@browser* browser, @http_response* resp)
|
||||
@cyberia_set_cookie_raw(browser, keys->value);
|
||||
break;
|
||||
}
|
||||
did_set_cookie = TRUE;
|
||||
}
|
||||
keys = keys->next;
|
||||
}
|
||||
if (did_set_cookie) {
|
||||
Json.DumpToFile(CYBERIA_COOKIES_FILE, cyberia->o("cookies"), browser_task);
|
||||
}
|
||||
}
|
||||
|
||||
U0 @cyberia_navigate(Bool refresh = FALSE)
|
||||
|
||||
Reference in New Issue
Block a user