From 753d5bf2acd36c40535bc02e839808984ee45776 Mon Sep 17 00:00:00 2001 From: Kevin Chung <kchung@ctfd.io> Date: Sat, 7 Sep 2024 05:35:31 +0000 Subject: [PATCH 1/2] Add getBrackets function to CTFd.pages.scoreboard and add bracketId argument to scoreboard functions --- main.js | 3 ++- pages/scoreboard.js | 24 ++++++++++++++++++++---- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/main.js b/main.js index 259dc99..9b15a39 100644 --- a/main.js +++ b/main.js @@ -12,7 +12,7 @@ import { displayUnlock, displayHint, } from "./pages/challenge"; -import { getScoreboard, getScoreboardDetail } from "./pages/scoreboard"; +import { getScoreboard, getScoreboardDetail, getBrackets } from "./pages/scoreboard"; import { updateSettings, generateToken, deleteToken } from "./pages/settings"; import { userSolves, userFails, userAwards } from "./pages/users"; import { @@ -136,6 +136,7 @@ const pages = { scoreboard: { getScoreboard, getScoreboardDetail, + getBrackets, }, settings: { updateSettings, diff --git a/pages/scoreboard.js b/pages/scoreboard.js index e015196..4156a34 100644 --- a/pages/scoreboard.js +++ b/pages/scoreboard.js @@ -1,17 +1,33 @@ import CTFd from "../main"; -export async function getScoreboard() { - const response = await CTFd.fetch("/api/v1/scoreboard", { +export async function getScoreboard(bracketId = null) { + let url = "/api/v1/scoreboard"; + if (bracketId) { + url = `${url}&bracket_id=${bracketId}`; + } + const response = await CTFd.fetch(url, { method: "GET", }); const body = await response.json(); return body["data"]; // scoreboard data } -export async function getScoreboardDetail(count) { - const response = await CTFd.fetch(`/api/v1/scoreboard/top/${count}`, { +export async function getScoreboardDetail(count, bracketId = null) { + let url = `/api/v1/scoreboard/top/${count}`; + if (bracketId) { + url = `${url}&bracket_id=${bracketId}`; + } + const response = await CTFd.fetch(url, { method: "GET", }); const body = await response.json(); return body["data"]; // scoreboard data } + +export async function getBrackets(userMode) { + const response = await CTFd.fetch(`/api/v1/brackets?type=${userMode}`, { + method: "GET", + }); + const body = await response.json(); + return body["data"]; +} From 423fe0b2e556b1aeda16f3b0e8c8df271bfaaa0b Mon Sep 17 00:00:00 2001 From: Kevin Chung <kchung@ctfd.io> Date: Sat, 7 Sep 2024 02:07:10 -0400 Subject: [PATCH 2/2] Fix typo --- pages/scoreboard.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pages/scoreboard.js b/pages/scoreboard.js index 4156a34..e694788 100644 --- a/pages/scoreboard.js +++ b/pages/scoreboard.js @@ -3,7 +3,7 @@ import CTFd from "../main"; export async function getScoreboard(bracketId = null) { let url = "/api/v1/scoreboard"; if (bracketId) { - url = `${url}&bracket_id=${bracketId}`; + url = `${url}?bracket_id=${bracketId}`; } const response = await CTFd.fetch(url, { method: "GET", @@ -15,7 +15,7 @@ export async function getScoreboard(bracketId = null) { export async function getScoreboardDetail(count, bracketId = null) { let url = `/api/v1/scoreboard/top/${count}`; if (bracketId) { - url = `${url}&bracket_id=${bracketId}`; + url = `${url}?bracket_id=${bracketId}`; } const response = await CTFd.fetch(url, { method: "GET",