diff --git a/fields/main.go b/fields/main.go index 25b7380..78ad56c 100644 --- a/fields/main.go +++ b/fields/main.go @@ -204,6 +204,11 @@ type %s struct { code += fieldCode + "\n" } + switch structName { + case "User": + code += "\t// non-generated fields\n\tIP string `json:\"ip,omitempty\"`\n" + } + code = code + "}\n" if strings.HasPrefix(structName, "Setting") { diff --git a/unifi/user.generated.go b/unifi/user.generated.go index f28d3b9..43e2be5 100644 --- a/unifi/user.generated.go +++ b/unifi/user.generated.go @@ -29,6 +29,8 @@ type User struct { Note string `json:"note,omitempty"` UseFixedIP bool `json:"use_fixedip"` UserGroupID string `json:"usergroup_id"` + // non-generated fields + IP string `json:"ip,omitempty"` } func (c *Client) listUser(site string) ([]User, error) { diff --git a/unifi/user.go b/unifi/user.go index 3bd11cb..1a651f1 100644 --- a/unifi/user.go +++ b/unifi/user.go @@ -2,6 +2,9 @@ package unifi import "fmt" +// GetUserByMAC returns slightly different information than GetUser, as they +// use separate endpoints for their lookups. Specifically IP is only returned +// by this method. func (c *Client) GetUserByMAC(site, mac string) (*User, error) { var respBody struct { Meta meta `json:"meta"` @@ -129,6 +132,9 @@ func (c *Client) ListUser(site string) ([]User, error) { return c.listUser(site) } +// GetUser returns information about a user from the REST endpoint. +// The GetUserByMAC method returns slightly different information (for +// example the IP) as it uses a different endpoint. func (c *Client) GetUser(site, id string) (*User, error) { return c.getUser(site, id) }