Files
go-ts3/permission.go

166 lines
4.7 KiB
Go

package ts3
type PermissionGroupType int
// noinspection GoUnusedConst
const (
PermissionGroupTypeServerGroup PermissionGroupType = 0
PermissionGroupTypeGlobalClient PermissionGroupType = 1
PermissionGroupTypeChannel PermissionGroupType = 2
PermissionGroupTypeChannelGroup PermissionGroupType = 3
PermissionGroupTypeChannelClient PermissionGroupType = 4
)
// permfind `manage_scope, write_scope, read_scope`
type permissionFindRequest struct {
PermissionId int `schema:"permid,omitempty"`
StringPermissionId string `schema:"permsid,omitempty"`
}
type PermissionFindResponse struct {
Id int `json:"p,string"`
PermissionGroupType PermissionGroupType `json:"t,string"`
MajorId int `json:"id1,string"`
MinorId int `json:"id2,string"`
}
func (c *TeamspeakHttpClient) permissionFind(request permissionFindRequest) (*PermissionFindResponse, error) {
var perms []PermissionFindResponse
err := c.requestWithParams("permfind", request, &perms)
if err != nil {
return nil, err
}
return &perms[0], nil
}
func (c *TeamspeakHttpClient) PermissionFind(permissionId int) (*PermissionFindResponse, error) {
return c.permissionFind(permissionFindRequest{PermissionId: permissionId})
}
func (c *TeamspeakHttpClient) PermissionStringFind(permissionId string) (*PermissionFindResponse, error) {
return c.permissionFind(permissionFindRequest{StringPermissionId: permissionId})
}
// permget `manage_scope, write_scope, read_scope`
type permissionGetRequest struct {
PermissionId int `schema:"permid,omitempty"`
StringPermissionId string `schema:"permsid,omitempty"`
}
type PermissionGetResponse struct {
PermissionId int `schema:"permid"`
StringPermissionId string `schema:"permsid"`
PermissionValue int `json:"permvalue,string"`
}
func (c *TeamspeakHttpClient) permissionGet(request permissionGetRequest) (*PermissionGetResponse, error) {
var perms []PermissionGetResponse
err := c.requestWithParams("permget", request, &perms)
if err != nil {
return nil, err
}
return &perms[0], nil
}
func (c *TeamspeakHttpClient) PermissionGet(permissionId int) (*PermissionGetResponse, error) {
return c.permissionGet(permissionGetRequest{PermissionId: permissionId})
}
func (c *TeamspeakHttpClient) StringPermissionGet(permissionId string) (*PermissionGetResponse, error) {
return c.permissionGet(permissionGetRequest{StringPermissionId: permissionId})
}
// permidgetbyname `manage_scope, write_scope, read_scope`
type permissionGetByNameRequest struct {
Name string `schema:"permsid"`
}
type permissionGetByNameResponse struct {
Id int `json:"permid,string"`
}
func (c *TeamspeakHttpClient) PermissionGetByName(name string) (*int, error) {
var ids []permissionGetByNameResponse
err := c.requestWithParams("permidgetbyname", permissionGetByNameRequest{Name: name}, &ids)
if err != nil {
return nil, err
}
return &ids[0].Id, nil
}
// permissionlist `manage_scope, write_scope, read_scope`
type Permission struct {
PermissionId int `json:"permid,string"`
PermissionName string `json:"permname"`
PermissionDescription string `json:"permdesc"`
}
func (c *TeamspeakHttpClient) PermissionList() (*[]Permission, error) {
var permissions []Permission
err := c.request("permissionlist", &permissions)
if err != nil {
return nil, err
}
return &permissions, nil
}
// permoverview `manage_scope, write_scope, read_scope`
type permissionOverviewRequest struct {
ChannelId int `schema:"cid"`
ClientDbId int `schema:"cldbid"`
PermissionId int `schema:"permid"`
}
type PermissionOverview struct {
Id int `json:"p,string"`
PermissionGroupType PermissionGroupType `json:"t,string"`
MajorId int `json:"id1,string"`
MinorId int `json:"id2,string"`
Value int `json:"v,string"`
Negated int `json:"n,string"`
Skipped int `json:"s,string"`
}
func (c *TeamspeakHttpClient) PermissionOverview(channelId, clientDbId int) (*[]PermissionOverview, error) {
var permissions []PermissionOverview
err := c.requestWithParams(
"permoverview",
permissionOverviewRequest{
ChannelId: channelId,
ClientDbId: clientDbId,
PermissionId: 0,
},
&permissions,
)
if err != nil {
return nil, err
}
return &permissions, nil
}
// permreset `manage_scope`
type permissionResetResponse struct {
Token string `json:"token"`
}
func (c *TeamspeakHttpClient) PermissionReset() (*string, error) {
var tokens []permissionResetResponse
err := c.request("permreset", &tokens)
if err != nil {
return nil, err
}
return &tokens[0].Token, nil
}