From 0a9bb840a67ac8fb9f220199edb753b6b2a998f6 Mon Sep 17 00:00:00 2001 From: u Date: Mon, 3 Apr 2023 17:49:43 +0200 Subject: [PATCH] feat: new functions that allow the parsing of connectivity info Signed-off-by: u --- pkg/netmanager/connectivity.go | 50 ++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/pkg/netmanager/connectivity.go b/pkg/netmanager/connectivity.go index 0efd28f4..a70a7eca 100644 --- a/pkg/netmanager/connectivity.go +++ b/pkg/netmanager/connectivity.go @@ -2,6 +2,7 @@ package netmanager import ( "fmt" + "strings" ) type ConnectivityState int @@ -25,6 +26,19 @@ func (cs ConnectivityState) String() string { } } +func ParseConnectivityState(s string) (ConnectivityState, error) { + switch strings.ToLower(s) { + case "unknown": + return ConnectivityStateUnknown, nil + case "off": + return ConnectivityStateOff, nil + case "on": + return ConnectivityStateOn, nil + default: + return ConnectivityStateUnknown, fmt.Errorf("invalid connectivity state (unknown/off/on): %q", s) + } +} + type ConnectivityNetType int const ( @@ -52,6 +66,23 @@ func (cnt ConnectivityNetType) String() string { } } +func ParseConnectivityNetType(s string) (ConnectivityNetType, error) { + switch strings.ToLower(s) { + case "unknown": + return ConnectivityNetUnknown, nil + case "none": + return ConnectivityNetNone, nil + case "wifi": + return ConnectivityNetWifi, nil + case "ethernet": + return ConnectivityNetEthernet, nil + case "cellular": + return ConnectivityNetCellular, nil + default: + return ConnectivityNetUnknown, fmt.Errorf("invalid connectivity net type (unknown/none/wifi/ethernet/cellular): %q", s) + } +} + type ConnectivityCellularType int const ( @@ -82,6 +113,25 @@ func (cct ConnectivityCellularType) String() string { } } +func ParseConnectivityCellularType(s string) (ConnectivityCellularType, error) { + switch strings.ToLower(s) { + case "unknown": + return ConnectivityCellularUnknown, nil + case "none": + return ConnectivityCellularNone, nil + case "2g": + return ConnectivityCellular2G, nil + case "3g": + return ConnectivityCellular3G, nil + case "4g": + return ConnectivityCellular4G, nil + case "5g": + return ConnectivityCellular5G, nil + default: + return ConnectivityCellularUnknown, fmt.Errorf("invalid connectivity cellular type (unknown/none/2g/3g/4g/5g): %q", s) + } +} + type ConnectivityInfo struct { // False when the device is not connected to a network. State ConnectivityState