From 46dd36a846aec7e8c86f23f38b7d913818e4f32d Mon Sep 17 00:00:00 2001 From: Peter Siegmund Date: Tue, 29 Oct 2024 09:42:30 +0100 Subject: [PATCH] more hal+json optimisation Signed-off-by: Peter Siegmund --- .../timezone/controllers/TimezoneController.java | 11 ++++++++--- .../domain/model/response/LocationResponse.java | 12 +++++++++++- .../domain/model/response/TimezoneResponse.java | 2 -- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/main/java/dev/mars3142/fhq/timezone_service/timezone/controllers/TimezoneController.java b/src/main/java/dev/mars3142/fhq/timezone_service/timezone/controllers/TimezoneController.java index 6218993..2d3d2de 100644 --- a/src/main/java/dev/mars3142/fhq/timezone_service/timezone/controllers/TimezoneController.java +++ b/src/main/java/dev/mars3142/fhq/timezone_service/timezone/controllers/TimezoneController.java @@ -1,5 +1,6 @@ package dev.mars3142.fhq.timezone_service.timezone.controllers; +import static org.springframework.beans.support.PagedListHolder.DEFAULT_PAGE_SIZE; import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.linkTo; import dev.mars3142.fhq.timezone_service.timezone.domain.model.response.LocationResponse; @@ -7,6 +8,7 @@ import dev.mars3142.fhq.timezone_service.timezone.domain.model.response.Timezone import dev.mars3142.fhq.timezone_service.timezone.service.TimezoneService; import lombok.RequiredArgsConstructor; import lombok.val; +import org.springdoc.core.converters.models.Pageable; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -25,8 +27,8 @@ public class TimezoneController { @GetMapping @ResponseStatus(HttpStatus.OK) public TimezoneResponse getTimeZone( - @RequestHeader(value = "X-Forwarded-For", defaultValue = "127.0.0.1") String header) { - val clientIp = header.split(",")[0]; + @RequestHeader(value = "X-Forwarded-For", defaultValue = "127.0.0.1") String header_ip) { + val clientIp = header_ip.split(",")[0]; val ip = timeZoneService.getExternalIp(clientIp); val timezoneInfo = timeZoneService.getTimeZoneInfoByIp(ip); val posix = timeZoneService.getPosixTimeZone(timezoneInfo.timezone()); @@ -41,7 +43,10 @@ public class TimezoneController { @ResponseStatus(HttpStatus.OK) public LocationResponse getLocations(@PathVariable String area) { val locations = timeZoneService.getLocations(area); - return new LocationResponse(locations.size(), locations); + val result = new LocationResponse(); + result.setLocations(locations); + result.add(linkTo(TimezoneController.class).slash(area).withSelfRel()); + return result; } @GetMapping("{area}/{location}") diff --git a/src/main/java/dev/mars3142/fhq/timezone_service/timezone/domain/model/response/LocationResponse.java b/src/main/java/dev/mars3142/fhq/timezone_service/timezone/domain/model/response/LocationResponse.java index 62c3696..040ee60 100644 --- a/src/main/java/dev/mars3142/fhq/timezone_service/timezone/domain/model/response/LocationResponse.java +++ b/src/main/java/dev/mars3142/fhq/timezone_service/timezone/domain/model/response/LocationResponse.java @@ -1,7 +1,17 @@ package dev.mars3142.fhq.timezone_service.timezone.domain.model.response; import java.util.List; +import lombok.Getter; +import org.springframework.hateoas.RepresentationModel; -public record LocationResponse(int count, List locations) { +@Getter +public class LocationResponse extends RepresentationModel { + private int count; + private List locations; + + public void setLocations(List locations) { + this.count = locations.size(); + this.locations = locations; + } } diff --git a/src/main/java/dev/mars3142/fhq/timezone_service/timezone/domain/model/response/TimezoneResponse.java b/src/main/java/dev/mars3142/fhq/timezone_service/timezone/domain/model/response/TimezoneResponse.java index 7964ec3..026d48f 100644 --- a/src/main/java/dev/mars3142/fhq/timezone_service/timezone/domain/model/response/TimezoneResponse.java +++ b/src/main/java/dev/mars3142/fhq/timezone_service/timezone/domain/model/response/TimezoneResponse.java @@ -1,13 +1,11 @@ package dev.mars3142.fhq.timezone_service.timezone.domain.model.response; import lombok.Getter; -import lombok.RequiredArgsConstructor; import lombok.Setter; import org.springframework.hateoas.RepresentationModel; @Getter @Setter -@RequiredArgsConstructor public class TimezoneResponse extends RepresentationModel { private String timezone;