rename TimeZone to Timezone
Signed-off-by: Peter Siegmund <developer@mars3142.org>
This commit is contained in:
@@ -11,9 +11,9 @@ import org.springframework.context.annotation.Configuration;
|
|||||||
public class OpenAPIConfig {
|
public class OpenAPIConfig {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public OpenAPI timeZoneOpenAPI() {
|
public OpenAPI timezoneOpenAPI() {
|
||||||
return new OpenAPI()
|
return new OpenAPI()
|
||||||
.info(new Info().title("TimeZone API").version("1.0"))
|
.info(new Info().title("Timezone API").version("1.0"))
|
||||||
.servers(
|
.servers(
|
||||||
List.of(
|
List.of(
|
||||||
new Server().url("https://api.firmware-hq.dev"),
|
new Server().url("https://api.firmware-hq.dev"),
|
||||||
|
@@ -2,8 +2,8 @@ package dev.mars3142.fhq.timezone_service.timezone.controllers;
|
|||||||
|
|
||||||
import dev.mars3142.fhq.timezone_service.timezone.domain.entities.response.TimeApiTimezoneZoneResponse;
|
import dev.mars3142.fhq.timezone_service.timezone.domain.entities.response.TimeApiTimezoneZoneResponse;
|
||||||
import dev.mars3142.fhq.timezone_service.timezone.domain.model.response.LocationResponse;
|
import dev.mars3142.fhq.timezone_service.timezone.domain.model.response.LocationResponse;
|
||||||
import dev.mars3142.fhq.timezone_service.timezone.domain.model.response.TimeZoneResponse;
|
import dev.mars3142.fhq.timezone_service.timezone.domain.model.response.TimezoneResponse;
|
||||||
import dev.mars3142.fhq.timezone_service.timezone.service.TimeZoneService;
|
import dev.mars3142.fhq.timezone_service.timezone.service.TimezoneService;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.val;
|
import lombok.val;
|
||||||
@@ -19,19 +19,19 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("v1/timezone")
|
@RequestMapping("v1/timezone")
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class TimeZoneController {
|
public class TimezoneController {
|
||||||
|
|
||||||
private final TimeZoneService timeZoneService;
|
private final TimezoneService timeZoneService;
|
||||||
|
|
||||||
@GetMapping
|
@GetMapping
|
||||||
public HttpEntity<TimeZoneResponse> getTimeZone(
|
public HttpEntity<TimezoneResponse> getTimeZone(
|
||||||
@RequestHeader(value = "X-Forwarded-For", defaultValue = "127.0.0.1") String header) {
|
@RequestHeader(value = "X-Forwarded-For", defaultValue = "127.0.0.1") String header) {
|
||||||
val clientIp = header.split(",")[0];
|
val clientIp = header.split(",")[0];
|
||||||
val ip = timeZoneService.getExternalIp(clientIp);
|
val ip = timeZoneService.getExternalIp(clientIp);
|
||||||
val timezoneInfo = timeZoneService.getTimeZoneInfoByIp(ip);
|
val timezoneInfo = timeZoneService.getTimeZoneInfoByIp(ip);
|
||||||
val posix = timeZoneService.getPosixTimeZone(timezoneInfo.timezone());
|
val posix = timeZoneService.getPosixTimeZone(timezoneInfo.timezone());
|
||||||
return new ResponseEntity<>(
|
return new ResponseEntity<>(
|
||||||
TimeZoneResponse.builder().timezone(timezoneInfo.timezone()).abbreviation(timezoneInfo.abbreviation())
|
TimezoneResponse.builder().timezone(timezoneInfo.timezone()).abbreviation(timezoneInfo.abbreviation())
|
||||||
.posix_tz(posix).build(), HttpStatus.OK);
|
.posix_tz(posix).build(), HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -42,14 +42,14 @@ public class TimeZoneController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("{area}/{location}")
|
@GetMapping("{area}/{location}")
|
||||||
public HttpEntity<TimeZoneResponse> getTimeZoneForLocation(@PathVariable String area, @PathVariable String location) {
|
public HttpEntity<TimezoneResponse> getTimeZoneForLocation(@PathVariable String area, @PathVariable String location) {
|
||||||
val timezone = area + "/" + location;
|
val timezone = area + "/" + location;
|
||||||
val timezoneInfo = timeZoneService.getTimeZoneInfo(timezone);
|
val timezoneInfo = timeZoneService.getTimeZoneInfo(timezone);
|
||||||
val abbreviation = Objects.requireNonNullElse(timezoneInfo.dstInterval(),
|
val abbreviation = Objects.requireNonNullElse(timezoneInfo.dstInterval(),
|
||||||
new TimeApiTimezoneZoneResponse.Interval(null)).dstName();
|
new TimeApiTimezoneZoneResponse.Interval(null)).dstName();
|
||||||
val posix = timeZoneService.getPosixTimeZone(timezone);
|
val posix = timeZoneService.getPosixTimeZone(timezone);
|
||||||
return new ResponseEntity<>(
|
return new ResponseEntity<>(
|
||||||
TimeZoneResponse.builder().timezone(timezone).abbreviation(abbreviation).posix_tz(posix).build(),
|
TimezoneResponse.builder().timezone(timezone).abbreviation(abbreviation).posix_tz(posix).build(),
|
||||||
HttpStatus.OK);
|
HttpStatus.OK);
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -8,7 +8,7 @@ import org.springframework.hateoas.RepresentationModel;
|
|||||||
@Getter
|
@Getter
|
||||||
@Builder
|
@Builder
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class TimeZoneResponse extends RepresentationModel<TimeZoneResponse> {
|
public class TimezoneResponse extends RepresentationModel<TimezoneResponse> {
|
||||||
|
|
||||||
private final String timezone;
|
private final String timezone;
|
||||||
private final String abbreviation;
|
private final String abbreviation;
|
@@ -4,7 +4,7 @@ import dev.mars3142.fhq.timezone_service.timezone.domain.entities.response.TimeA
|
|||||||
import dev.mars3142.fhq.timezone_service.timezone.domain.entities.response.WorldTimeApiIpResponse;
|
import dev.mars3142.fhq.timezone_service.timezone.domain.entities.response.WorldTimeApiIpResponse;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface TimeZoneService {
|
public interface TimezoneService {
|
||||||
|
|
||||||
String getExternalIp(String ip);
|
String getExternalIp(String ip);
|
||||||
|
|
@@ -4,7 +4,7 @@ import dev.mars3142.fhq.timezone_service.exceptions.NotFoundException;
|
|||||||
import dev.mars3142.fhq.timezone_service.timezone.domain.entities.response.IpifyResponse;
|
import dev.mars3142.fhq.timezone_service.timezone.domain.entities.response.IpifyResponse;
|
||||||
import dev.mars3142.fhq.timezone_service.timezone.domain.entities.response.TimeApiTimezoneZoneResponse;
|
import dev.mars3142.fhq.timezone_service.timezone.domain.entities.response.TimeApiTimezoneZoneResponse;
|
||||||
import dev.mars3142.fhq.timezone_service.timezone.domain.entities.response.WorldTimeApiIpResponse;
|
import dev.mars3142.fhq.timezone_service.timezone.domain.entities.response.WorldTimeApiIpResponse;
|
||||||
import dev.mars3142.fhq.timezone_service.timezone.service.TimeZoneService;
|
import dev.mars3142.fhq.timezone_service.timezone.service.TimezoneService;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
@@ -21,11 +21,11 @@ import org.springframework.web.client.RestClient;
|
|||||||
|
|
||||||
@Service
|
@Service
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class TimeZoneServiceImpl implements TimeZoneService {
|
public class TimezoneServiceImpl implements TimezoneService {
|
||||||
|
|
||||||
private final RestClient restClient;
|
private final RestClient restClient;
|
||||||
|
|
||||||
public TimeZoneServiceImpl(RestClient.Builder restClientBuilder) {
|
public TimezoneServiceImpl(RestClient.Builder restClientBuilder) {
|
||||||
restClient = restClientBuilder.build();
|
restClient = restClientBuilder.build();
|
||||||
}
|
}
|
||||||
|
|
@@ -14,11 +14,11 @@ import static org.springframework.test.web.client.match.MockRestRequestMatchers.
|
|||||||
import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess;
|
import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess;
|
||||||
|
|
||||||
@DisplayName("Testing Timezone Service Default Implementation")
|
@DisplayName("Testing Timezone Service Default Implementation")
|
||||||
@RestClientTest(TimeZoneServiceImpl.class)
|
@RestClientTest(TimezoneServiceImpl.class)
|
||||||
class TimeZoneServiceImplTest {
|
class TimezoneServiceImplTest {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private TimeZoneServiceImpl timeZoneService;
|
private TimezoneServiceImpl timeZoneService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private MockRestServiceServer server;
|
private MockRestServiceServer server;
|
@@ -12,7 +12,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||||||
|
|
||||||
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
||||||
@DisplayName("Testing Timezone RestController")
|
@DisplayName("Testing Timezone RestController")
|
||||||
public class TimeZoneControllerTest {
|
public class TimezoneControllerTest {
|
||||||
|
|
||||||
@LocalServerPort
|
@LocalServerPort
|
||||||
private int port;
|
private int port;
|
Reference in New Issue
Block a user