From 7eeac808b577f0839db32df338538d9035768bef Mon Sep 17 00:00:00 2001 From: Paul Tyng Date: Mon, 30 Dec 2019 04:12:31 -0500 Subject: [PATCH] Add additional API for WLAN groups --- unifi/wlan_group.go | 73 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 72 insertions(+), 1 deletion(-) diff --git a/unifi/wlan_group.go b/unifi/wlan_group.go index 8529211..3e0db2a 100644 --- a/unifi/wlan_group.go +++ b/unifi/wlan_group.go @@ -16,7 +16,11 @@ type WLANGroup struct { BSupported bool `json:"b_supported"` LoadBalanceEnabled bool `json:"loadbalance_enabled"` - PMFMode string `json:"pmf_mode"` + PMFMode string `json:"pmf_mode"` // "disabled", "optional", "required" + // roam_channel_na: 36 + // roam_channel_ng: 1 + // roam_enabled: false + // roam_radio: "ng" } func (c *Client) ListWLANGroup(site string) ([]WLANGroup, error) { @@ -32,3 +36,70 @@ func (c *Client) ListWLANGroup(site string) ([]WLANGroup, error) { return respBody.Data, nil } + +func (c *Client) GetWLANGroup(site, id string) (*WLANGroup, error) { + var respBody struct { + Meta meta `json:"meta"` + Data []WLANGroup `json:"data"` + } + + err := c.do("GET", fmt.Sprintf("s/%s/rest/wlangroup/%s", site, id), nil, &respBody) + if err != nil { + return nil, err + } + + if len(respBody.Data) != 1 { + return nil, &NotFoundError{} + } + + d := respBody.Data[0] + return &d, nil +} + +func (c *Client) DeleteWLANGroup(site, id string) error { + err := c.do("DELETE", fmt.Sprintf("s/%s/rest/wlangroup/%s", site, id), struct{}{}, nil) + if err != nil { + return err + } + return nil +} + +func (c *Client) CreateWLANGroup(site string, d *WLANGroup) (*WLANGroup, error) { + var respBody struct { + Meta meta `json:"meta"` + Data []WLANGroup `json:"data"` + } + + err := c.do("POST", fmt.Sprintf("s/%s/rest/wlangroup", site), d, &respBody) + if err != nil { + return nil, err + } + + if len(respBody.Data) != 1 { + return nil, &NotFoundError{} + } + + new := respBody.Data[0] + + return &new, nil +} + +func (c *Client) UpdateWLANGroup(site string, d *WLANGroup) (*WLANGroup, error) { + var respBody struct { + Meta meta `json:"meta"` + Data []WLANGroup `json:"data"` + } + + err := c.do("PUT", fmt.Sprintf("s/%s/rest/wlangroup/%s", site, d.ID), d, &respBody) + if err != nil { + return nil, err + } + + if len(respBody.Data) != 1 { + return nil, &NotFoundError{} + } + + new := respBody.Data[0] + + return &new, nil +}