Merge pull request #1610 from Redusofficial/main

[.NET] ActivityWatcher.GetServerLocation() Http optimization
This commit is contained in:
pizzaboxer 2024-05-12 21:29:03 +01:00 committed by GitHub
commit 86fcbf6c1a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 33 additions and 23 deletions

View File

@ -280,13 +280,27 @@
if (GeolocationCache.ContainsKey(ActivityMachineAddress))
return GeolocationCache[ActivityMachineAddress];
string location, locationCity, locationRegion, locationCountry = "";
try
{
locationCity = await App.HttpClient.GetStringAsync($"https://ipinfo.io/{ActivityMachineAddress}/city");
locationRegion = await App.HttpClient.GetStringAsync($"https://ipinfo.io/{ActivityMachineAddress}/region");
locationCountry = await App.HttpClient.GetStringAsync($"https://ipinfo.io/{ActivityMachineAddress}/country");
string location = "";
var ipInfo = await Http.GetJson<IPInfoResponse>($"https://ipinfo.io/{ActivityMachineAddress}/json");
if (ipInfo is null)
return $"N/A ({Resources.Strings.ActivityTracker_LookupFailed})";
if (string.IsNullOrEmpty(ipInfo.Country))
location = "N/A";
else if (ipInfo.City == ipInfo.Region)
location = $"{ipInfo.Region}, {ipInfo.Country}";
else
location = $"{ipInfo.City}, {ipInfo.Region}, {ipInfo.Country}";
if (!ActivityInGame)
return $"N/A ({Resources.Strings.ActivityTracker_LeftGame})";
GeolocationCache[ActivityMachineAddress] = location;
return location;
}
catch (Exception ex)
{
@ -295,24 +309,6 @@
return $"N/A ({Resources.Strings.ActivityTracker_LookupFailed})";
}
locationCity = locationCity.ReplaceLineEndings("");
locationRegion = locationRegion.ReplaceLineEndings("");
locationCountry = locationCountry.ReplaceLineEndings("");
if (string.IsNullOrEmpty(locationCountry))
location = "N/A";
else if (locationCity == locationRegion)
location = $"{locationRegion}, {locationCountry}";
else
location = $"{locationCity}, {locationRegion}, {locationCountry}";
if (!ActivityInGame)
return $"N/A ({Resources.Strings.ActivityTracker_LeftGame})";
GeolocationCache[ActivityMachineAddress] = location;
return location;
}
public void Dispose()

View File

@ -0,0 +1,14 @@
namespace Bloxstrap.Models
{
public class IPInfoResponse
{
[JsonPropertyName("city")]
public string City { get; set; } = null!;
[JsonPropertyName("country")]
public string Country { get; set; } = null!;
[JsonPropertyName("region")]
public string Region { get; set; } = null!;
}
}