diff --git a/resources/yaml/config.yml b/resources/yaml/config.yml index 2532a8d..e7dbd69 100644 --- a/resources/yaml/config.yml +++ b/resources/yaml/config.yml @@ -1,13 +1,13 @@ Calendars: - - ID: "1776ed34-fccf-4845-aa1b-5c6821649804" - Name: "HM Fristen & Termine" - Url: "https://api.betterhm.app/static/calendar/1776ed34-fccf-4845-aa1b-5c6821649804.ics" - SourceURL: "https://calendar.google.com/calendar/ical/qp1nk83jvkfm7a3m9goqhr5oo4%40group.calendar.google.com/public/basic.ics" - - ID: "870baf08-b182-4451-a1f5-657b8ef02852" - Name: "Gesetzliche Feiertage" - Url: "https://api.betterhm.app/static/calendar/870baf08-b182-4451-a1f5-657b8ef02852.ics" - SourceURL: "https://www.thunderbird.net/media/caldata/GermanHolidays.ics" + - id: "1776ed34-fccf-4845-aa1b-5c6821649804" + name: "HM Fristen & Termine" + url: "https://api.betterhm.app/static/calendar/1776ed34-fccf-4845-aa1b-5c6821649804.ics" + sourceURL: "https://calendar.proton.me/api/calendar/v1/url/973m76Afxr3ryM4NFjuZUVhmqMGh3SIpMX-1eSlwOL_bhqA38biXWzQPqaLfWLkVBOs9Sh7Q3E002rMctPnErw==/calendar.ics?CacheKey=R3FlWaFezXeobpnpHQapxw%3D%3D&PassphraseKey=956kJaPh_-UjxGYMfexjyo3oExfXMXdKKLL7W3vhd9I%3D" + - id: "870baf08-b182-4451-a1f5-657b8ef02852" + name: "Gesetzliche Feiertage" + url: "https://api.betterhm.app/static/calendar/870baf08-b182-4451-a1f5-657b8ef02852.ics" + sourceURL: "https://www.thunderbird.net/media/caldata/GermanHolidays.ics" CapacityElements: - enum_name: "STUCAFE_KARLSTR" lrz_subdistrict_id: "rf" diff --git a/src/main/java/app/betterhm/backend/v1/component/StaticUpdater.java b/src/main/java/app/betterhm/backend/v1/component/StaticUpdater.java index f4f0530..247bc23 100644 --- a/src/main/java/app/betterhm/backend/v1/component/StaticUpdater.java +++ b/src/main/java/app/betterhm/backend/v1/component/StaticUpdater.java @@ -32,8 +32,8 @@ public StaticUpdater(YamlParser yamlParser) { @PostConstruct @Scheduled(cron = "0 0 4 * * *") public void updateCalendar(){ - yaml.Calendars().stream().filter(element -> element.SourceURL().isPresent()).forEach(element -> - downloadFile(element.SourceURL().get(), "resources/static/calendar/" + element.ID() + ".ics")); + yaml.Calendars().stream().filter(element -> element.sourceURL().isPresent()).forEach(element -> + downloadFile(element.sourceURL().get(), "resources/static/calendar/" + element.id() + ".ics")); logger.info("Calendar files updated"); } diff --git a/src/main/java/app/betterhm/backend/v1/controller/CalendarController.java b/src/main/java/app/betterhm/backend/v1/controller/CalendarController.java index 18d501b..d0edc54 100644 --- a/src/main/java/app/betterhm/backend/v1/controller/CalendarController.java +++ b/src/main/java/app/betterhm/backend/v1/controller/CalendarController.java @@ -2,45 +2,47 @@ import app.betterhm.backend.configuration.httpNotFoundException; import app.betterhm.backend.v1.models.CalendarElement; +import app.betterhm.backend.v1.models.CalendarWrapper; import app.betterhm.backend.v1.services.CalendarService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.List; - /** * This class is responsible for handling the calendar requests */ @RestController @RequestMapping("/v1/calendar") public class CalendarController { - private final CalendarService calendarServiceObject; + private final CalendarService calendarServiceObject; - public CalendarController(CalendarService calendarServiceObject) { - this.calendarServiceObject = calendarServiceObject; - } - /** - * Returns the list of calendar elements - * @return Json list of calendar elements - */ - @GetMapping() - public List getCalendarList() { - return this.calendarServiceObject.getCalendarElementsList(); - } + public CalendarController(CalendarService calendarServiceObject) { + this.calendarServiceObject = calendarServiceObject; + } + + /** + * Returns the list of calendar elements + * + * @return Json list of calendar elements + */ + @GetMapping() + public CalendarWrapper getCalendarList() { + return new CalendarWrapper(this.calendarServiceObject.getCalendarElementsList()); + } - /** - * Returns the calendar element with the given ID - * @param id UUID of the calendar element - * @return Json of the calendar element - */ - @GetMapping("/{id}") - public CalendarElement getCalendar(@PathVariable String id) { - CalendarElement singleCalendarElements = calendarServiceObject.getSingleCalendarElements(id); - if (singleCalendarElements == null) { - throw new httpNotFoundException(); - } - return singleCalendarElements; + /** + * Returns the calendar element with the given ID + * + * @param id UUID of the calendar element + * @return Json of the calendar element + */ + @GetMapping("/{id}") + public CalendarElement getCalendar(@PathVariable String id) { + CalendarElement singleCalendarElements = calendarServiceObject.getSingleCalendarElements(id); + if (singleCalendarElements == null) { + throw new httpNotFoundException(); } + return singleCalendarElements; + } } diff --git a/src/main/java/app/betterhm/backend/v1/models/CalendarElement.java b/src/main/java/app/betterhm/backend/v1/models/CalendarElement.java index d9d838d..d7546f8 100644 --- a/src/main/java/app/betterhm/backend/v1/models/CalendarElement.java +++ b/src/main/java/app/betterhm/backend/v1/models/CalendarElement.java @@ -5,4 +5,11 @@ /** * This Record is a Template for the calendar element */ -public record CalendarElement(String ID, String Name, String Url, Optional SourceURL, Optional Description) {} +public record CalendarElement( + String id, + String name, + String url, + Optional sourceURL, + Optional description +) { +} diff --git a/src/main/java/app/betterhm/backend/v1/models/CalendarWrapper.java b/src/main/java/app/betterhm/backend/v1/models/CalendarWrapper.java new file mode 100644 index 0000000..02e4161 --- /dev/null +++ b/src/main/java/app/betterhm/backend/v1/models/CalendarWrapper.java @@ -0,0 +1,19 @@ +package app.betterhm.backend.v1.models; + +import java.util.List; + +public class CalendarWrapper { + private List data; + + public CalendarWrapper(List elements) { + this.data = elements; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } +} diff --git a/src/main/java/app/betterhm/backend/v1/services/CalendarService.java b/src/main/java/app/betterhm/backend/v1/services/CalendarService.java index bc2e28b..583558f 100644 --- a/src/main/java/app/betterhm/backend/v1/services/CalendarService.java +++ b/src/main/java/app/betterhm/backend/v1/services/CalendarService.java @@ -23,13 +23,13 @@ public List getCalendarElementsList(){ } /** - * Returns the calendar element with the given ID + * Returns the calendar element with the given id * @param calendarElementID UUID of the calendar element * @return CalendarElement */ public CalendarElement getSingleCalendarElements(String calendarElementID) { return calendarElementsList.stream() - .filter(Element -> Element.ID().equals(calendarElementID)) + .filter(element -> element.id().equals(calendarElementID)) .findFirst() .orElse(null); } diff --git a/src/main/java/app/betterhm/backend/v1/services/CapacityService.java b/src/main/java/app/betterhm/backend/v1/services/CapacityService.java index 9ef2544..ce0742f 100644 --- a/src/main/java/app/betterhm/backend/v1/services/CapacityService.java +++ b/src/main/java/app/betterhm/backend/v1/services/CapacityService.java @@ -113,11 +113,11 @@ private String getDataFromLRZ(CapacityConfigRecord capacityConfigRecord) { String[] splitUrl = lrzApiUrl.split("\\{\\{subdistrict_id}}", 2); //builds the URL with the sub-district id apiUrl = URI.create(splitUrl[0] + capacityConfigRecord.lrz_subdistrict_id() + splitUrl[1]).toURL(); } catch (PatternSyntaxException e) { - logger.error("Could not Split LRZ Api Url Provided by the config", e); - throw new PatternSyntaxException("Could not Split LRZ Api Url Provided by the config", lrzApiUrl, -1); + logger.error("Could not Split LRZ Api url Provided by the config", e); + throw new PatternSyntaxException("Could not Split LRZ Api url Provided by the config", lrzApiUrl, -1); }catch (MalformedURLException e) { - logger.error("Could not Generate a valid Url for the LRZ Wifi Api", e); - throw new IllegalStateException("Could not Generate a valid Url for the LRZ Wifi Api", e); + logger.error("Could not Generate a valid url for the LRZ Wifi Api", e); + throw new IllegalStateException("Could not Generate a valid url for the LRZ Wifi Api", e); } //gets the data from the LRZ API try (InputStream in = apiUrl.openStream()) {