class ScoreService { constructor(config) { this.baseUrl = config.API_BASE_URL; this.urlTail = "score"; } async getScoreByName(username) { // Note: When user does not exist, we get a 200 with empty array, not a 404 const response = await fetch(`${this.baseUrl}${this.urlTail}/${username}`, { method: "GET", }); let body = null; try { body = await response.json(); } catch { console.error("Error in getScoreByName"); } return { status: response.status, ok: response.ok, body: body, }; } async postScore(username, password, score, time, text, userWrittenText) { const response = await fetch(`${this.baseUrl}${this.urlTail}`, { method: "POST", headers: { "Content-Type": "application/json", "X-Username": username, "X-Password": password, }, body: JSON.stringify({ score: score, time: time, text: text, userWrittenText: userWrittenText, }), }); let body = null; try { body = await response.json(); } catch { console.error("Error in postScore"); } return { status: response.status, ok: response.ok, body: body, }; } async deleteScore(username, password, scoreId) { const response = await fetch(`${this.baseUrl}${this.urlTail}/${scoreId}`, { method: "DELETE", headers: { "X-Username": username, "X-Password": password, }, }); let body = null; try { body = await response.json(); } catch { console.error("Error in deleteScore"); } return { status: response.status, ok: response.ok, body: body, }; } } window.ScoreService = ScoreService;