From 8c2397c4cfac20f035fd24c3415b87c478886e96 Mon Sep 17 00:00:00 2001 From: Anthony Debucquoy Date: Tue, 5 Mar 2024 00:15:52 +0100 Subject: [PATCH 1/9] Base for rest api utilisation The restConsumer will be the base, then I will create a js file per "object" (for instance there will be users.js with all endpoints for users using the restConsumer.js) --- frontend/src/i18n.js | 18 ++---------------- frontend/src/rest/restConsumer.js | 24 ++++++++++++++++++++++++ frontend/src/utils.js | 17 +++++++++++++++++ 3 files changed, 43 insertions(+), 16 deletions(-) create mode 100644 frontend/src/rest/restConsumer.js create mode 100644 frontend/src/utils.js diff --git a/frontend/src/i18n.js b/frontend/src/i18n.js index 02fba50..2b0a2a4 100644 --- a/frontend/src/i18n.js +++ b/frontend/src/i18n.js @@ -9,6 +9,8 @@ * */ +import { getCookie } from './utils.js'; + const default_lang = "EN"; let langs; @@ -44,22 +46,6 @@ export default i18n; // Those functions are utility functions use by previous exported functions. // -/** - * Return the content of a cookie with specified key - * @param key cookie name - */ -function getCookie(key){ - key = key + "=" - let cookies = decodeURIComponent(document.cookie).split(";"); - for (let el of cookies) { - el = el.trimStart(); - if(el.indexOf(key) == 0){ - return el.substr(key.length, el.length); - } - } - return ""; -} - /** * Function that load the file with translation from the specified lang and return a dictionnary * @param select the language to load. could be null to fetch the cookies for an answer diff --git a/frontend/src/rest/restConsumer.js b/frontend/src/rest/restConsumer.js new file mode 100644 index 0000000..a83087c --- /dev/null +++ b/frontend/src/rest/restConsumer.js @@ -0,0 +1,24 @@ +import { getCookie } from './utils.js' + +const restURL = import.meta.env.PROD ? "https://clyde.herisson.ovh/api" : "http://localhost:8080" + +export async function restGet(endPoint) { + return await _rest(endPoint, {method: "GET"}); +} + +export async function restPost(endPoint, data) { + return await _rest(endPoint, {method: "POST", body: data}); + +} + +export async function restDelete(endPoint, data) { + return await _rest(endPoint, {method: "POST", body: data}); +} + +async function _rest(endPoint, config){ + endPoint.at(0) != "/" ? console.error("Carefull, you certainly should put a / at the begenning of your endPoint ") : true; + let session_token = getCookie("session_token"); + let headers = new Headers({'Authorization': session_token}); + config['headers'] = headers; + return fetch(restURL + endPoint, config).then( e => e.json()); +} diff --git a/frontend/src/utils.js b/frontend/src/utils.js new file mode 100644 index 0000000..e79eec4 --- /dev/null +++ b/frontend/src/utils.js @@ -0,0 +1,17 @@ +/** + * Return the content of a cookie with specified key + * @param key cookie name + */ +function getCookie(key){ + key = key + "=" + let cookies = decodeURIComponent(document.cookie).split(";"); + for (let el of cookies) { + el = el.trimStart(); + if(el.indexOf(key) == 0){ + return el.substr(key.length, el.length); + } + } + return ""; +} + +export {getCookie}; From 09d5e1c293307265e0ce2547187f293cc69fb64e Mon Sep 17 00:00:00 2001 From: Anthony Debucquoy Date: Tue, 5 Mar 2024 11:48:04 +0100 Subject: [PATCH 2/9] Document rest --- frontend/src/rest/restConsumer.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/frontend/src/rest/restConsumer.js b/frontend/src/rest/restConsumer.js index a83087c..b57839d 100644 --- a/frontend/src/rest/restConsumer.js +++ b/frontend/src/rest/restConsumer.js @@ -8,17 +8,27 @@ export async function restGet(endPoint) { export async function restPost(endPoint, data) { return await _rest(endPoint, {method: "POST", body: data}); - } export async function restDelete(endPoint, data) { - return await _rest(endPoint, {method: "POST", body: data}); + return await _rest(endPoint, {method: "DELETE", body: data}); } +/** + * backbone for the request made by the frontend + * + * specification + * - If the user has "session_token" cookie set, it will use it in the authorization field of the http request + * - The result will be returned as a json to access fields easily ( the backend should send json response ) + * + * @Example _rest("/ping", {user: data}) -> {id:0, txt:"pong"} + */ async function _rest(endPoint, config){ endPoint.at(0) != "/" ? console.error("Carefull, you certainly should put a / at the begenning of your endPoint ") : true; let session_token = getCookie("session_token"); let headers = new Headers({'Authorization': session_token}); config['headers'] = headers; return fetch(restURL + endPoint, config).then( e => e.json()); + + // TODO: Handle errors } From 837db9aba98c5c1e4d0c83a99ffb0c5695233003 Mon Sep 17 00:00:00 2001 From: Anthony Debucquoy Date: Tue, 5 Mar 2024 13:18:57 +0100 Subject: [PATCH 3/9] backbone for login --- frontend/src/Login.vue | 17 +++++++++++++---- frontend/src/rest/Users.js | 5 +++++ frontend/src/rest/restConsumer.js | 2 +- 3 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 frontend/src/rest/Users.js diff --git a/frontend/src/Login.vue b/frontend/src/Login.vue index 52e7e19..e0d949a 100644 --- a/frontend/src/Login.vue +++ b/frontend/src/Login.vue @@ -1,16 +1,25 @@ + +