166 lines
4.7 KiB
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
|
|
}
|