From 32a62cfcb925225359a5c90761b795f2f737ebd2 Mon Sep 17 00:00:00 2001 From: LLLL Colonq Date: Tue, 18 Aug 2026 00:08:28 -0400 Subject: Re-populate games --- 2026/games/just__jane/src/score.cpp | 79 +++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 2026/games/just__jane/src/score.cpp (limited to '2026/games/just__jane/src/score.cpp') diff --git a/2026/games/just__jane/src/score.cpp b/2026/games/just__jane/src/score.cpp new file mode 100644 index 0000000..ea0aa78 --- /dev/null +++ b/2026/games/just__jane/src/score.cpp @@ -0,0 +1,79 @@ +#include +#include +#include + +#include +#include +#include +#include + +struct PostData { + char *body; +}; + +EM_JS(char *, get_cookie, (const char *name), { + const cookieName = UTF8ToString(name) + "="; + const cookies = document.cookie.split(";"); + + for (let c of cookies) { + c = c.trim(); + + if (c.startsWith(cookieName)) { + const value = c.substring(cookieName.length); + const len = lengthBytesUTF8(value) + 1; + const buffer = _malloc(len); + stringToUTF8(value, buffer, len); + return buffer; + } + } + + return 0; +}); + +void cleanup(emscripten_fetch_t *fetch) { + auto *data = static_cast(fetch->userData); + free(data->body); + delete data; + emscripten_fetch_close(fetch); +} + +void on_success(emscripten_fetch_t *fetch) { + printf("success: %d\n", fetch->status); + cleanup(fetch); +} + +void on_error(emscripten_fetch_t *fetch) { + printf("error: %d\n", fetch->status); + cleanup(fetch); +} + +void post_score(int score) { + auto username = get_cookie("bahms_user_login"); + if (!username) { + return; + } + + std::string text = std::format("## {}\nscore: {}", username, score); + + auto *data = new PostData; + data->body = static_cast(malloc(text.size())); + memcpy(data->body, text.data(), text.size()); + + emscripten_fetch_attr_t attr; + emscripten_fetch_attr_init(&attr); + + strcpy(attr.requestMethod, "POST"); + attr.withCredentials = true; + + const char *headers[] = {"Content-Type", "text/plain; charset=utf-8", nullptr}; + + attr.requestHeaders = headers; + attr.requestData = data->body; + attr.requestDataSize = text.size(); + attr.userData = data; + + attr.onsuccess = on_success; + attr.onerror = on_error; + + emscripten_fetch(&attr, "https://api.bahms.org/v1/game/sakura-samurai"); +} -- cgit v1.3.1