github.com/dim13/unifi@v0.0.0-20230308161331-9b04946f5e93/network.go (about)

     1  // Copyright (c) 2014 The unifi Authors. All rights reserved.
     2  // Use of this source code is governed by ISC-style license
     3  // that can be found in the LICENSE file.
     4  
     5  package unifi
     6  
     7  // A map of UniFi Networks with a given attribute as key
     8  type NetworkMap map[string]Network
     9  
    10  // UniFi Network object
    11  type Network struct {
    12  	ID                string `json:"_id"`
    13  	AttrHiddenID      string `json:"attr_hidden_id"`
    14  	AttrNoDelete      bool   `json:"attr_no_delete"`
    15  	DhcpdEnabled      bool   `json:"dhcpd_enabled"`
    16  	DhcpdStart        string `json:"dhcpd_start"`
    17  	DhcpdStop         string `json:"dhcpd_stop"`
    18  	Dhcpdv6Enabled    bool   `json:"dhcpdv6_enabled"`
    19  	DomainName        string `json:"domain_name"`
    20  	IPSubnet          string `json:"ip_subnet"`
    21  	Ipv6InterfaceType string `json:"ipv6_interface_type"`
    22  	Ipv6RaEnabled     bool   `json:"ipv6_ra_enabled"`
    23  	IsNat             bool   `json:"is_nat"`
    24  	Name              string `json:"name"`
    25  	Networkgroup      string `json:"networkgroup"`
    26  	Purpose           string `json:"purpose"`
    27  	SiteID            string `json:"site_id"`
    28  	VlanEnabled       bool   `json:"vlan_enabled"`
    29  }
    30  
    31  // Networks Returns a slice of known networks
    32  func (u *Unifi) Networks(site *Site) ([]Network, error) {
    33  	var response struct {
    34  		Data []Network
    35  		Meta meta
    36  	}
    37  	err := u.parse(site, "rest/networkconf", nil, &response)
    38  	return response.Data, err
    39  }
    40  
    41  // NetworkMap Returns a map of networkconfigs of a given site with ID as key
    42  func (u *Unifi) NetworkMap(site *Site) (NetworkMap, error) {
    43  	networks, err := u.Networks(site)
    44  	if err != nil {
    45  		return nil, err
    46  	}
    47  	m := make(NetworkMap)
    48  	for _, n := range networks {
    49  		m[n.ID] = n
    50  	}
    51  	return m, nil
    52  }