using AiQ_GUI; using System; using System.Net.Http; using System.Net.Http.Json; using System.Security.Cryptography; using System.Text; using System.Text.Json; using System.Threading.Tasks; public static class MobilePreTest { public static async Task CheckFirmwareAsync() { const string cameraIp = "192.168.0.112"; using HttpClient client = new HttpClient { BaseAddress = new Uri($"http://{cameraIp}") }; try { // Login and get JWT token string token = await LoginAsync(client, "ADMIN", "1234"); // Attach JWT to all requests client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token); // Request firmware information HttpResponseMessage response = await client.GetAsync("/app/v1/system/firmware"); string body = await response.Content.ReadAsStringAsync(); MainForm.Instance.AddToActionsList( $"Firmware check response: {(int)response.StatusCode} {response.StatusCode} | {body}", Level.LOG); response.EnsureSuccessStatusCode(); JsonElement json = JsonSerializer.Deserialize(body); string version = json.GetProperty("version").GetString(); MainForm.Instance.AddToActionsList( $"Current firmware version: {version}", Level.Success); } catch (Exception ex) { MainForm.Instance.AddToActionsList( $"Firmware check failed: {ex.Message}", Level.ERROR); } } private static async Task LoginAsync(HttpClient client, string user, string password) { var payload = new { userId = user, userPassword = Sha256(password) }; HttpResponseMessage response = await client.PostAsJsonAsync("/app/v1/login", payload); response.EnsureSuccessStatusCode(); JsonElement json = await response.Content.ReadFromJsonAsync(); return json.GetProperty("token").GetString(); } private static string Sha256(string input) { using SHA256 sha = SHA256.Create(); byte[] bytes = sha.ComputeHash(Encoding.UTF8.GetBytes(input)); return BitConverter.ToString(bytes).Replace("-", "").ToLower(); } }