fix: Fix update checker by adding user agent

This commit is contained in:
2025-06-21 02:23:34 +08:00
parent 38421b7a53
commit cdaf0dfd2f
2 changed files with 31 additions and 2 deletions

View File

@@ -19,6 +19,7 @@ using Newtonsoft.Json;
using System;
using System.Globalization;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
using System.Xml;
using System.Xml.Linq;
@@ -47,6 +48,8 @@ namespace Cryville.Crtr {
static FileStream _logFileStream;
static StreamLoggerListener _logWriter;
public static string UnityUserAgent { get; private set; }
static bool _init;
public static void Init() {
if (_init) return;
@@ -177,6 +180,32 @@ namespace Cryville.Crtr {
Settings.Default.LastRunVersion = Application.version;
Settings.Default.Save();
#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN
UnityUserAgent = string.Format(
CultureInfo.InvariantCulture,
"CosmoResona/{0} (Windows NT {1}; {2})",
Application.version,
Environment.OSVersion.Version,
RuntimeInformation.OSArchitecture.ToString().ToLowerInvariant()
);
#elif UNITY_ANDROID
var androidClassBuildVersion = AndroidJNI.FindClass("android/os/Build$VERSION");
var androidRelease = AndroidJNI.GetStaticStringField(androidClassBuildVersion, AndroidJNI.GetStaticFieldID(androidClassBuildVersion, "RELEASE", "Ljava/lang/String;"));
var androidClassBuild = AndroidJNI.FindClass("android/os/Build");
var androidModel = AndroidJNI.GetStaticStringField(androidClassBuild, AndroidJNI.GetStaticFieldID(androidClassBuild, "MODEL", "Ljava/lang/String;"));
var androidID = AndroidJNI.GetStaticStringField(androidClassBuild, AndroidJNI.GetStaticFieldID(androidClassBuild, "ID", "Ljava/lang/String;"));
UnityUserAgent = string.Format(
CultureInfo.InvariantCulture,
"CosmoResona/{0} (Linux; Android {1}; {2} Build/{3})",
Application.version,
androidRelease ?? "12.0.99",
androidModel,
androidID
);
#else
#error No Unity User Agent
#endif
MainLogger.Log(1, "UI", "Initializing font manager");
foreach (var res in Resources.LoadAll<TextAsset>("cldr/common/validity")) {
IdValidity.Load(LoadXmlDocument(res));

View File

@@ -47,7 +47,7 @@ namespace Cryville.Crtr.Network {
}
void CheckVersion() {
using (var client = new HttpClient()) {
client.Connect();
client.DefaultRequestHeaders.UserAgent.ParseAdd(Game.UnityUserAgent);
using var response = client.GetAsync(new Uri(BaseUri, "versions")).Result;
var data = response.Content.ReadAsStringAsync().Result;
_versions = JsonConvert.DeserializeObject<List<VersionInfo>>(data, Game.GlobalJsonSerializerSettings);
@@ -132,7 +132,7 @@ namespace Cryville.Crtr.Network {
void Download(VersionResourceInfo diff, string path) {
var uri = new Uri(diff.url);
using var client = new HttpClient();
client.Connect();
client.DefaultRequestHeaders.UserAgent.ParseAdd(Game.UnityUserAgent);
using var response = client.GetAsync(uri).Result;
using var stream = response.Content.ReadAsStreamAsync().Result;
using var file = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None);