switching IP provider
Signed-off-by: Peter Siegmund <developer@mars3142.org>
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
|
) {
|
||||||
|
|
||||||
|
}
|
@@ -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) {
|
|
||||||
|
|
||||||
}
|
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user