From 1ac863de1f565daf6c86f3db09b95f708790cb35 Mon Sep 17 00:00:00 2001 From: jeanluc <2163936+lkubb@users.noreply.github.com> Date: Wed, 10 Aug 2022 01:34:05 +0000 Subject: [PATCH] Fix type of `lte_ext_ant`/`lte_poe` fields (#89) --- fields/main.go | 2 ++ unifi/device.generated.go | 18 +++++++++++------- unifi/json.go | 22 ++++++++++++++++++++++ 3 files changed, 35 insertions(+), 7 deletions(-) diff --git a/fields/main.go b/fields/main.go index d2e5ff2..c3c4938 100644 --- a/fields/main.go +++ b/fields/main.go @@ -339,6 +339,8 @@ func main() { if f.FieldType == "string" { f.CustomUnmarshalType = "numberOrString" } + case "LteExtAnt", "LtePoe": + f.CustomUnmarshalType = "booleanishString" } f.OmitEmpty = true diff --git a/unifi/device.generated.go b/unifi/device.generated.go index 2003957..bf7b889 100644 --- a/unifi/device.generated.go +++ b/unifi/device.generated.go @@ -101,13 +101,15 @@ type Device struct { func (dst *Device) UnmarshalJSON(b []byte) error { type Alias Device aux := &struct { - LcmBrightness emptyStringInt `json:"lcm_brightness"` - LcmIDleTimeout emptyStringInt `json:"lcm_idle_timeout"` - LedOverrideColorBrightness emptyStringInt `json:"led_override_color_brightness"` - LteHardLimit emptyStringInt `json:"lte_hard_limit"` - LteSimPin emptyStringInt `json:"lte_sim_pin"` - LteSoftLimit emptyStringInt `json:"lte_soft_limit"` - Volume emptyStringInt `json:"volume"` + LcmBrightness emptyStringInt `json:"lcm_brightness"` + LcmIDleTimeout emptyStringInt `json:"lcm_idle_timeout"` + LedOverrideColorBrightness emptyStringInt `json:"led_override_color_brightness"` + LteExtAnt booleanishString `json:"lte_ext_ant"` + LteHardLimit emptyStringInt `json:"lte_hard_limit"` + LtePoe booleanishString `json:"lte_poe"` + LteSimPin emptyStringInt `json:"lte_sim_pin"` + LteSoftLimit emptyStringInt `json:"lte_soft_limit"` + Volume emptyStringInt `json:"volume"` *Alias }{ @@ -121,7 +123,9 @@ func (dst *Device) UnmarshalJSON(b []byte) error { dst.LcmBrightness = int(aux.LcmBrightness) dst.LcmIDleTimeout = int(aux.LcmIDleTimeout) dst.LedOverrideColorBrightness = int(aux.LedOverrideColorBrightness) + dst.LteExtAnt = bool(aux.LteExtAnt) dst.LteHardLimit = int(aux.LteHardLimit) + dst.LtePoe = bool(aux.LtePoe) dst.LteSimPin = int(aux.LteSimPin) dst.LteSoftLimit = int(aux.LteSoftLimit) dst.Volume = int(aux.Volume) diff --git a/unifi/json.go b/unifi/json.go index 502642f..00e918b 100644 --- a/unifi/json.go +++ b/unifi/json.go @@ -1,6 +1,7 @@ package unifi import ( + "errors" "strconv" "strings" ) @@ -66,3 +67,24 @@ func (e *emptyStringInt) MarshalJSON() ([]byte, error) { return []byte(strconv.Itoa(int(*e))), nil } + +type booleanishString bool + +func (e *booleanishString) UnmarshalJSON(b []byte) error { + s := string(b) + if s == `"enabled"` { + *e = booleanishString(true) + return nil + } else if s == `"disabled"` { + *e = booleanishString(false) + return nil + } + return errors.New("Could not unmarshal JSON value.") +} + +func (e *booleanishString) MarshalJSON(b []byte) ([]byte, error) { + if *e == true { + return []byte(`"enabled"`), nil + } + return []byte(`"disabled"`), nil +}