From e93f92a06606bec02ab59938cfb63deea550c5fa Mon Sep 17 00:00:00 2001 From: James Stephenson Date: Fri, 21 Aug 2020 14:47:02 -0400 Subject: [PATCH] Expose `Device` API --- fields/main.go | 2 +- unifi/device.generated.go | 2 +- unifi/device.go | 41 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 unifi/device.go diff --git a/fields/main.go b/fields/main.go index 428e2a0..016cfd6 100644 --- a/fields/main.go +++ b/fields/main.go @@ -138,7 +138,7 @@ func NewResource(structName string, resourcePath string) *Resource { } if resource.StructName == "Device" { - baseType.Fields[" MAC"] = NewFieldInfo("MAC", "mac", "string", "", false, false) + baseType.Fields[" MAC"] = NewFieldInfo("MAC", "mac", "string", "", true, false) } if resource.StructName == "User" { diff --git a/unifi/device.generated.go b/unifi/device.generated.go index 906c4fd..69b7557 100644 --- a/unifi/device.generated.go +++ b/unifi/device.generated.go @@ -23,7 +23,7 @@ type Device struct { NoDelete bool `json:"attr_no_delete,omitempty"` NoEdit bool `json:"attr_no_edit,omitempty"` - MAC string `json:"mac"` + MAC string `json:"mac,omitempty"` AtfEnabled bool `json:"atf_enabled,omitempty"` BandsteeringMode string `json:"bandsteering_mode,omitempty"` // off|equal|prefer_5g diff --git a/unifi/device.go b/unifi/device.go new file mode 100644 index 0000000..177d862 --- /dev/null +++ b/unifi/device.go @@ -0,0 +1,41 @@ +package unifi + +import ( + "context" +) + +func (c *Client) ListDevice(ctx context.Context, site string) ([]Device, error) { + return c.listDevice(ctx, site) +} + +func (c *Client) GetDevice(ctx context.Context, site, mac string) (*Device, error) { + return c.getDevice(ctx, site, mac) +} + +func (c *Client) DeleteDevice(ctx context.Context, site, id string) error { + return c.deleteDevice(ctx, site, id) +} + +func (c *Client) CreateDevice(ctx context.Context, site string, d *Device) (*Device, error) { + return c.createDevice(ctx, site, d) +} + +func (c *Client) UpdateDevice(ctx context.Context, site string, d *Device) (*Device, error) { + return c.updateDevice(ctx, site, d) +} + +func (c *Client) GetDeviceById(ctx context.Context, site, id string) (*Device, error) { + devices, err := c.ListDevice(ctx, site) + + if err != nil { + return nil, err + } + + for _, d := range devices { + if d.ID == id { + return &d, nil + } + } + + return nil, &NotFoundError{} +}