diff --git a/dependencies.properties b/dependencies.properties index 75311a34..1ae6f3da 100644 --- a/dependencies.properties +++ b/dependencies.properties @@ -1 +1 @@ -core.version=0.16.1 \ No newline at end of file +core.version=0.16.4 \ No newline at end of file diff --git a/lib/features/proxy/data/proxy_repository.dart b/lib/features/proxy/data/proxy_repository.dart index a02f7c6c..54cc0703 100644 --- a/lib/features/proxy/data/proxy_repository.dart +++ b/lib/features/proxy/data/proxy_repository.dart @@ -127,6 +127,7 @@ class ProxyRepositoryImpl final Map response)> _ipInfoSources = { // "https://geolocation-db.com/json/": IpInfo.fromGeolocationDbComJson, //bug response is not json + "https://ipwho.is/": IpInfo.fromIpwhoIsJson, "https://api.ip.sb/geoip/": IpInfo.fromIpSbJson, "https://ipapi.co/json/": IpInfo.fromIpApiCoJson, "https://ipinfo.io/json/": IpInfo.fromIpInfoIoJson, diff --git a/lib/features/proxy/model/ip_info_entity.dart b/lib/features/proxy/model/ip_info_entity.dart index 228c7c96..999b0068 100644 --- a/lib/features/proxy/model/ip_info_entity.dart +++ b/lib/features/proxy/model/ip_info_entity.dart @@ -92,6 +92,30 @@ class IpInfo with IpInfoMappable { }; } + static IpInfo fromIpwhoIsJson(Map json) { + return switch (json) { + { + "ip": final String ip, + "country_code": final String countryCode, + // "region": final String region, + // "city": final String city, + // "timezone": final String timezone, + // "asn": final int asn, + "connection": final Map connection, + } => + IpInfo( + ip: ip, + countryCode: countryCode, + // region: region, + // city: city, + // timezone: timezone, + asn: '$connection["asn"]', + org: '$connection["org"]', + ), + _ => throw const FormatException("invalid json"), + }; + } + static IpInfo fromGeolocationDbComJson(Map json) { return switch (json) { { diff --git a/libcore b/libcore index 48297a74..4dad3022 160000 --- a/libcore +++ b/libcore @@ -1 +1 @@ -Subproject commit 48297a74aecec0410120e52001cc30d84d77c875 +Subproject commit 4dad3022f3bb5073a7d7927fa605b81fa1942752