Merge pull request #4 from rcloran/str-int
Handle some fields that may be strings or numbers
This commit is contained in:
commit
184862f32e
|
|
@ -181,7 +181,7 @@ func (u UAP) Points() ([]*influx.Point, error) {
|
||||||
"device_mac": u.Mac,
|
"device_mac": u.Mac,
|
||||||
"name": p.Name,
|
"name": p.Name,
|
||||||
"wlangroup_id": p.WlangroupID,
|
"wlangroup_id": p.WlangroupID,
|
||||||
"channel": p.Channel, // not the channel #
|
"channel": strconv.Itoa(p.Channel.Value),
|
||||||
"radio": p.Radio,
|
"radio": p.Radio,
|
||||||
}
|
}
|
||||||
fields := map[string]interface{}{
|
fields := map[string]interface{}{
|
||||||
|
|
@ -196,7 +196,7 @@ func (u UAP) Points() ([]*influx.Point, error) {
|
||||||
"min_txpower": p.MinTxpower,
|
"min_txpower": p.MinTxpower,
|
||||||
"nss": p.Nss,
|
"nss": p.Nss,
|
||||||
"radio_caps": p.RadioCaps,
|
"radio_caps": p.RadioCaps,
|
||||||
"tx_power": p.TxPower,
|
"tx_power": p.TxPower.Value,
|
||||||
"tx_power_mode": p.TxPowerMode,
|
"tx_power_mode": p.TxPowerMode,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,36 @@
|
||||||
package unidev
|
package unidev
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"strconv"
|
||||||
|
)
|
||||||
|
|
||||||
|
// FlexInt provides a container and unmarshalling for fields that may be
|
||||||
|
// numbers or strings in the Unifi API
|
||||||
|
type FlexInt struct {
|
||||||
|
Value int
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this FlexInt) UnmarshalJSON(b []byte) error {
|
||||||
|
var unk interface{}
|
||||||
|
err := json.Unmarshal(b, &unk)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
switch i := unk.(type) {
|
||||||
|
case float64:
|
||||||
|
this.Value = int(i)
|
||||||
|
return nil
|
||||||
|
case string:
|
||||||
|
this.Value, err = strconv.Atoi(i)
|
||||||
|
return err
|
||||||
|
default:
|
||||||
|
return errors.New("Cannot unmarshal to FlexInt")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// UAP is a Unifi Access Point.
|
// UAP is a Unifi Access Point.
|
||||||
type UAP struct {
|
type UAP struct {
|
||||||
/* This was auto generated and then slowly edited by hand
|
/* This was auto generated and then slowly edited by hand
|
||||||
|
|
@ -119,7 +150,7 @@ type UAP struct {
|
||||||
RadioTable []struct {
|
RadioTable []struct {
|
||||||
BuiltinAntGain float64 `json:"builtin_ant_gain"`
|
BuiltinAntGain float64 `json:"builtin_ant_gain"`
|
||||||
BuiltinAntenna bool `json:"builtin_antenna"`
|
BuiltinAntenna bool `json:"builtin_antenna"`
|
||||||
Channel string `json:"channel"`
|
Channel FlexInt `json:"channel"`
|
||||||
CurrentAntennaGain float64 `json:"current_antenna_gain"`
|
CurrentAntennaGain float64 `json:"current_antenna_gain"`
|
||||||
Ht string `json:"ht"`
|
Ht string `json:"ht"`
|
||||||
MaxTxpower float64 `json:"max_txpower"`
|
MaxTxpower float64 `json:"max_txpower"`
|
||||||
|
|
@ -129,7 +160,7 @@ type UAP struct {
|
||||||
Nss float64 `json:"nss"`
|
Nss float64 `json:"nss"`
|
||||||
Radio string `json:"radio"`
|
Radio string `json:"radio"`
|
||||||
RadioCaps float64 `json:"radio_caps"`
|
RadioCaps float64 `json:"radio_caps"`
|
||||||
TxPower string `json:"tx_power"`
|
TxPower FlexInt `json:"tx_power"`
|
||||||
TxPowerMode string `json:"tx_power_mode"`
|
TxPowerMode string `json:"tx_power_mode"`
|
||||||
WlangroupID string `json:"wlangroup_id"`
|
WlangroupID string `json:"wlangroup_id"`
|
||||||
HasDfs bool `json:"has_dfs,omitempty"`
|
HasDfs bool `json:"has_dfs,omitempty"`
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue