//Calendar implementation for the HTWK Leipzig timetable. Evaluation and display of the individual dates in iCal format. //Copyright (C) 2024 HTWKalender support@htwkalender.de //This program is free software: you can redistribute it and/or modify //it under the terms of the GNU Affero General Public License as published by //the Free Software Foundation, either version 3 of the License, or //(at your option) any later version. //This program is distributed in the hope that it will be useful, //but WITHOUT ANY WARRANTY; without even the implied warranty of //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //GNU Affero General Public License for more details. //You should have received a copy of the GNU Affero General Public License //along with this program. If not, see . // function to fetch course data from the API import { Module } from "../model/module.ts"; export async function fetchCourse(): Promise { if (import.meta.env.SSR) { return []; } const courses: string[] = []; await fetch("/api/courses") .then((response) => { //check if response type is json const contentType = response.headers.get("content-type"); if (contentType && contentType.indexOf("application/json") !== -1) { return response.json(); } else { return []; } }) .then((coursesResponse) => { coursesResponse.forEach((course: string) => courses.push(course)); }); return courses; } export async function fetchCourseBySemester( semester: string, ): Promise { if (import.meta.env.SSR) { return []; } const courses: string[] = []; await fetch("/api/courses/events?semester=" + semester) .then((response) => { //check if response type is json const contentType = response.headers.get("content-type"); if (contentType && contentType.indexOf("application/json") !== -1) { return response.json(); } else { return []; } }) .then((coursesResponse) => { coursesResponse?.forEach((course: string) => courses.push(course)); }); return courses; } export async function fetchModulesByCourseAndSemester( course: string, semester: string, ): Promise { if (import.meta.env.SSR) { return []; } const modules: Module[] = []; await fetch("/api/course/modules?course=" + course + "&semester=" + semester) .then((response) => { return response.json(); }) .then((modulesResponse) => { modulesResponse.forEach((module: Module) => modules.push( new Module( module.uuid, module.name, course, module.eventType, module.name, module.prof, semester, false, module.events, ), ), ); }); return modules; } export async function fetchAllModules(): Promise { if (import.meta.env.SSR) { return []; } const modules: Module[] = []; await fetch("/api/modules") .then((response) => { return response.json() as Promise; }) .then((responseModules: Module[]) => { responseModules.forEach((module: Module) => { modules.push( new Module( module.uuid, module.name, module.course, module.eventType, module.name, module.prof, module.semester, false, module.events, ), ); }); }); return modules; }