From ff68e8d9b9c8c2e875d5c0dd1bf0e58d2cd5a780 Mon Sep 17 00:00:00 2001 From: CodingTurtle2 <104490184+CodingTurtle2@users.noreply.github.com> Date: Sun, 21 Dec 2025 18:18:12 +0100 Subject: [PATCH] g2.2 --- auth.js | 2 + lib/basic.js | 140 ++++++++++++++++++++++++++++++--------------------- login.html | 56 +++++++++++++++++++++ 3 files changed, 141 insertions(+), 57 deletions(-) create mode 100644 login.html diff --git a/auth.js b/auth.js index 5c1b74e..3b022be 100644 --- a/auth.js +++ b/auth.js @@ -2,3 +2,5 @@ const couchdb_username = "admin"; const couchdb_password = "admin"; const couchdb_name = "sassy"; + +//http://127.0.0.1:5984/_utils/#_config/couchdb@127.0.0.1 diff --git a/lib/basic.js b/lib/basic.js index eadb51f..daa639f 100644 --- a/lib/basic.js +++ b/lib/basic.js @@ -18,8 +18,12 @@ function _onOverlayDestroy(elm) { const ori_elm = getId(elm.getAttribute("name")); if (ori_elm) { const cb = ori_elm.getAttribute("onclose"); - if (typeof(cb) == "string") { - try { eval(cb); } catch(err) { console.error(err); } + if (typeof cb == "string") { + try { + eval(cb); + } catch (err) { + console.error(err); + } } } elm.remove(); @@ -29,7 +33,6 @@ function hideOverlay(id) { for (var i of elms) _onOverlayDestroy(i); } - function _main_events() { const header_bar_1 = document.querySelector(".header_bar_1"); if (header_bar_1 != null) { @@ -41,7 +44,7 @@ function _main_events() { isFloating = true; } }); - window.addEventListener("scroll", function() { + window.addEventListener("scroll", function () { if (window.pageYOffset > 0 && !isFloating) { header_bar_1.style.animationDuration = "0.5s"; header_bar_1.classList.remove("header_bar_1_docked"); @@ -58,35 +61,36 @@ function _main_events() { } _main_events(); - - /* ----------- couch db ----------- */ //http://127.0.0.1:5984/_utils/#_config/couchdb@127.0.0.1 class CouchDB { static _default_url = "http://127.0.0.1:5984/"; - + constructor() { this._does_auth_exists_err(); this.request = new XMLHttpRequest(); this.db_name = couchdb_name; this.is_online = 2; } - + //private methods - + _does_auth_exists() { return ( - typeof(couchdb_username) == "string" && - typeof(couchdb_password) == "string" && - typeof(couchdb_name) == "string" + typeof couchdb_username == "string" && + typeof couchdb_password == "string" && + typeof couchdb_name == "string" ); } _does_auth_exists_err() { - if (!this._does_auth_exists()) throw 'Keine Auth vorhanden. Digga, mach mal '; + if (!this._does_auth_exists()) + throw 'Keine Auth vorhanden. Digga, mach mal '; } _is_error_missing_database(errReason) { - return errReason === "no_db_file" || errReason === "Database does not exist."; + return ( + errReason === "no_db_file" || errReason === "Database does not exist." + ); } _is_error_missing_data(errReason) { return errReason === "missing"; @@ -94,15 +98,15 @@ class CouchDB { async _ping() { try { const response = await fetch(CouchDB._default_url, { - method: "GET" + method: "GET", }); - + return response.ok; - } catch(err) { + } catch (err) { return false; } } - + _send_db_request(method, url, body = null, errorHandling = true) { return new Promise(async (resolve, reject) => { if (this.is_online == 2) { @@ -112,13 +116,13 @@ class CouchDB { reject("CouchDB is not online!"); return; } - + const dburl = CouchDB._default_url + this.db_name + "/" + url; const request = this.request; - + this.request.onreadystatechange = () => { if (request.readyState != 4) return; - + try { if (request.status == 200 || request.status == 201) { var response = JSON.parse(request.responseText); @@ -129,54 +133,66 @@ class CouchDB { var json = JSON.parse(request.responseText); if (this._is_error_missing_data(json.reason)) { resolve(null); - } else if (errorHandling && this._is_error_missing_database(json.reason)) { - this.createDB().then((value) => { - this._send_db_request(method, url, body, false).then((value) => { - resolve(value); - }).catch((err) => { + } else if ( + errorHandling && + this._is_error_missing_database(json.reason) + ) { + this.createDB() + .then((value) => { + this._send_db_request(method, url, body, false) + .then((value) => { + resolve(value); + }) + .catch((err) => { + reject(err); + }); + }) + .catch((err) => { reject(err); }); - }).catch((err) => { - reject(err); - }); } else { - reject(`Database not found: ${request.status} (Reason: ${reason.json})`); + reject( + `Database not found: ${request.status} (Reason: ${reason.json})`, + ); } } else { - reject(`Unexpected status: ${request.status} (Response: ${ - request.responseText - })`); + reject( + `Unexpected status: ${request.status} (Response: ${ + request.responseText + })`, + ); } - } catch(err) { + } catch (err) { reject("Unexpected error: " + err); } }; - + this.request.open(method, dburl, true); - - this.request.setRequestHeader("Authorization", "Basic " + btoa( - couchdb_username + ":" + couchdb_password - )); + + this.request.setRequestHeader( + "Authorization", + "Basic " + btoa(couchdb_username + ":" + couchdb_password), + ); this.request.setRequestHeader("Content-type", "application/json"); - + this.request.send(body); }); } async _get_db_data(id) { return await this._send_db_request("GET", id); } - + //public methods - + async checkOnlineStatus() { const res = await this._ping(); - + if (res === true) { this.is_online = 1; } else { this.is_online = 0; } - + return res; } async createDB() { @@ -184,47 +200,57 @@ class CouchDB { } async get(id) { const res = await this._get_db_data(id); + if (res == null) return null; delete res["_id"]; delete res["_rev"]; return res; } async set(id, content, replace = true) { try { - if (typeof (content) != "object") throw "basic.js - CouchDB->set: content is not from type object (type = " + typeof(content) + ")"; - + if (typeof content != "object") + throw ( + "basic.js - CouchDB->set: content is not from type object (type = " + + typeof content + + ")" + ); + let existingDoc; try { existingDoc = await this._get_db_data(id); } catch (err) { existingDoc = null; } - + if (existingDoc) { if (replace) { content = { ...content, _id: existingDoc._id, - _rev: existingDoc._rev - }; + _rev: existingDoc._rev, + }; } else { content = { ...existingDoc, ...content, - _rev: existingDoc._rev + _rev: existingDoc._rev, }; } } - const res = await this._send_db_request("PUT", id, JSON.stringify(content)); + const res = await this._send_db_request( + "PUT", + id, + JSON.stringify(content), + ); return { - "type": "success", - "message": res + type: "success", + message: res, }; - } catch(err) { + } catch (err) { console.error(err); return { - "type": "error", - "message": err + type: "error", + message: err, }; } } -} \ No newline at end of file +} diff --git a/login.html b/login.html new file mode 100644 index 0000000..b55ef5b --- /dev/null +++ b/login.html @@ -0,0 +1,56 @@ + + +
+