49 lines
1.0 KiB
Go
49 lines
1.0 KiB
Go
package models
|
|
|
|
import (
|
|
"errors"
|
|
"github.com/grandcat/zeroconf"
|
|
"net"
|
|
)
|
|
|
|
// Online 在线数据
|
|
type Online struct {
|
|
AddrIPv4 []net.IP `json:"-"` // Host machine IPv4 address
|
|
AddrIPv6 []net.IP `json:"-"`
|
|
Port int `json:"port"`
|
|
ID string `json:"id"`
|
|
Name string `json:"name"` // 昵称
|
|
Avatar string `json:"avatar"` // 头像
|
|
Email string `json:"email"`
|
|
Phone string `json:"phone"`
|
|
Address string `json:"address"` // 工位
|
|
}
|
|
|
|
func UserTOnlineList(user *Users) []string {
|
|
return []string{
|
|
user.ID,
|
|
user.Name,
|
|
user.Avatar,
|
|
user.Email,
|
|
user.Phone,
|
|
user.Address,
|
|
}
|
|
}
|
|
|
|
func NewOnline(entry *zeroconf.ServiceEntry) (*Online, error) {
|
|
if len(entry.Text) != 6 {
|
|
return nil, errors.New("invalid online entry")
|
|
}
|
|
return &Online{
|
|
AddrIPv4: entry.AddrIPv4,
|
|
AddrIPv6: entry.AddrIPv6,
|
|
Port: entry.Port,
|
|
ID: entry.Text[0],
|
|
Name: entry.Text[1],
|
|
Avatar: entry.Text[2],
|
|
Email: entry.Text[3],
|
|
Phone: entry.Text[4],
|
|
Address: entry.Text[5],
|
|
}, nil
|
|
}
|