Forráskód Böngészése

Added a unit parser to resolve the issue of non int values for access point speed - Can be reused for other models such as switches, nics, firewalls, etc.

James 2 hónapja
szülő
commit
0cac3395dc

+ 4 - 1
RackPeek.Domain/Resources/Hardware/Models/AccessPoint.cs

@@ -1,7 +1,10 @@
+using RackPeek.Domain.Resources.Hardware.Parsing;
+
 namespace RackPeek.Domain.Resources.Hardware.Models;
 
 public class AccessPoint : Hardware
 {
     public string? Model { get; set; }
-    public int? Speed { get; set; }
+    public string? Speed { get; set; }
+    public double SpeedGb => UnitParser.ParseGbValue(Speed);
 }

+ 12 - 0
RackPeek.Domain/Resources/Hardware/Parsing/UnitParser.cs

@@ -0,0 +1,12 @@
+namespace RackPeek.Domain.Resources.Hardware.Parsing;
+
+public class UnitParser
+{
+    public static double ParseGbValue(string? raw)
+    {
+        if (string.IsNullOrWhiteSpace(raw)) return 0;
+        raw = raw.ToLower().Trim();
+        if (raw.EndsWith("gb")) raw = raw.Replace("gb", "");
+        return double.TryParse(raw, out var value) ? value : 0;
+    }
+}

+ 2 - 2
RackPeek.Domain/Resources/Hardware/Reports/AccessPointHardwareReport.cs

@@ -8,7 +8,7 @@ public record AccessPointHardwareReport(
 public record AccessPointHardwareRow(
     string Name,
     string Model,
-    int SpeedGb
+    double SpeedGb
 );
 
 public class AccessPointHardwareReportUseCase(IHardwareRepository repository)
@@ -23,7 +23,7 @@ public class AccessPointHardwareReportUseCase(IHardwareRepository repository)
             return new AccessPointHardwareRow(
                 Name: ap.Name,
                 Model: ap.Model ?? "Unknown",
-                SpeedGb: ap.Speed ?? 0
+                SpeedGb: ap.SpeedGb
             );
         }).ToList();
 

+ 25 - 1
RackPeek/aps.yaml

@@ -2,4 +2,28 @@ resources:
   - kind: AccessPoint
     name: lounge-ap
     model: Unifi-Ap-Pro
-    speed: 1gb
+    speed: 1gb
+  - kind: AccessPoint
+    name: office-ap
+    model: Unifi-U6-Lite
+    speed: 1gb
+
+  - kind: AccessPoint
+    name: garage-ap
+    model: TP-Link-EAP245
+    speed: 1gb
+
+  - kind: AccessPoint
+    name: upstairs-ap
+    model: Aruba-AP-515
+    speed: 2.5gb
+
+  - kind: AccessPoint
+    name: guest-ap
+    model: Unifi-U6-Mesh
+    speed: 1gb
+
+  - kind: AccessPoint
+    name: warehouse-ap
+    model: Cisco-Aironet-1832i
+    speed: 1gb

+ 2 - 2
Tests/Yaml/HardwareDeserializationTests.cs

@@ -403,7 +403,7 @@ resources:
   - kind: AccessPoint
     name: lounge-ap
     model: Unifi-Ap-Pro
-    speed: 1gb
+    speed: 2.5gb
 ";
 
         var sut = CreateSut(yaml);
@@ -421,7 +421,7 @@ resources:
 
         Assert.Equal("lounge-ap", accessPoint.Name);
         Assert.Equal("Unifi-Ap-Pro", accessPoint.Model);
-        Assert.Equal(1, accessPoint.Speed);
+        Assert.Equal(2.5, accessPoint.SpeedGb);
 
     }