switching IP provider

Signed-off-by: Peter Siegmund <developer@mars3142.org>
This commit is contained in:
2024-10-28 16:14:41 +01:00
parent 19b00f8c61
commit fd2d9873e1
6 changed files with 20 additions and 18 deletions

View File

@@ -31,7 +31,7 @@ public class TimezoneController {
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())
.posix_tz(posix).build(), HttpStatus.OK); .posix_tz(posix).build(), HttpStatus.OK);
} }
@@ -49,7 +49,7 @@ public class TimezoneController {
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).posix_tz(posix).build(),
HttpStatus.OK); HttpStatus.OK);
} }
} }

View File

@@ -0,0 +1,8 @@
package dev.mars3142.fhq.timezone_service.timezone.domain.entities.response;
public record IPApiResponse(String status, String country, String countryCode, String region, String regionName,
String city, String zip, String lat, String lon, String timezone, String isp, String or,
String as, String query
) {
}

View File

@@ -1,9 +0,0 @@
package dev.mars3142.fhq.timezone_service.timezone.domain.entities.response;
public record WorldTimeApiIpResponse(String utc_offset, String timezone, int day_of_week, int day_of_year,
String datetime,
String utc_datetime, int unixtime, int raw_offset, int week_number, boolean dst,
String abbreviation, int dst_offset, String dst_from, String dst_until,
String client_ip) {
}

View File

@@ -11,6 +11,5 @@ import org.springframework.hateoas.RepresentationModel;
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 posix_tz; private final String posix_tz;
} }

View File

@@ -1,14 +1,14 @@
package dev.mars3142.fhq.timezone_service.timezone.service; package dev.mars3142.fhq.timezone_service.timezone.service;
import dev.mars3142.fhq.timezone_service.timezone.domain.entities.response.IPApiResponse;
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 java.util.List; import java.util.List;
public interface TimezoneService { public interface TimezoneService {
String getExternalIp(String ip); String getExternalIp(String ip);
WorldTimeApiIpResponse getTimeZoneInfoByIp(String ip); IPApiResponse getTimeZoneInfoByIp(String ip);
TimeApiTimezoneZoneResponse getTimeZoneInfo(String timezone); TimeApiTimezoneZoneResponse getTimeZoneInfo(String timezone);

View File

@@ -1,9 +1,9 @@
package dev.mars3142.fhq.timezone_service.timezone.service.impl; package dev.mars3142.fhq.timezone_service.timezone.service.impl;
import dev.mars3142.fhq.timezone_service.exceptions.NotFoundException; import dev.mars3142.fhq.timezone_service.exceptions.NotFoundException;
import dev.mars3142.fhq.timezone_service.timezone.domain.entities.response.IPApiResponse;
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.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;
@@ -47,15 +47,19 @@ public class TimezoneServiceImpl implements TimezoneService {
@Override @Override
@Cacheable(value = "TZInfoByIp", key = "{#ip}") @Cacheable(value = "TZInfoByIp", key = "{#ip}")
public WorldTimeApiIpResponse getTimeZoneInfoByIp(String ip) { public IPApiResponse getTimeZoneInfoByIp(String ip) {
return restClient return restClient
.get() .get()
.uri("https://worldtimeapi.org/api/ip/" + ip) .uri(builder -> builder
.scheme("http")
.host("ip-api.com")
.path("json/" + ip)
.build())
.retrieve() .retrieve()
.onStatus(HttpStatusCode::is4xxClientError, (request, response) -> { .onStatus(HttpStatusCode::is4xxClientError, (request, response) -> {
throw new NotFoundException(); throw new NotFoundException();
}) })
.body(WorldTimeApiIpResponse.class); .body(IPApiResponse.class);
} }
@Override @Override