client

package
v0.0.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 16, 2025 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ResourcesPageSize = 100
)

Variables

This section is empty.

Functions

func WithConfluenceRatelimitData

func WithConfluenceRatelimitData(resource *v2.RateLimitDescription) uhttp.DoOption

WithConfluenceRatelimitData Per the docs: transient 5XX errors should be treated as 429/too-many-requests if they have a retry header. 503 errors were the only ones explicitly called out, but I guess it's possible for others too https://developer.atlassian.com/cloud/confluence/rate-limiting/

Types

type AddSpacePermissionGroupBody

type AddSpacePermissionGroupBody struct {
	GroupName  string                `json:"groupName"`
	Operations []PermissionOperation `json:"operations"`
}

type AddSpacePermissionUserBody

type AddSpacePermissionUserBody struct {
	UserKey    string                `json:"userKey"`
	Operations []PermissionOperation `json:"operations"`
}

type ConfluenceClient

type ConfluenceClient struct {
	// contains filtered or unexported fields
}

func NewConfluenceClient

func NewConfluenceClient(
	ctx context.Context,
	accessToken string,
	hostname string,
	password string,
	username string,
) (*ConfluenceClient, error)

func (*ConfluenceClient) AddGroupMember

func (c *ConfluenceClient) AddGroupMember(
	ctx context.Context,
	username string,
	groupName string,
) (
	*v2.RateLimitDescription,
	error,
)

AddGroupMember makes an idempotent PUT call.

func (*ConfluenceClient) AddSpace

func (c *ConfluenceClient) AddSpace(
	ctx context.Context,
	key string,
	name string,
	description string,
) (
	*v2.RateLimitDescription,
	error,
)

AddSpace makes an idempotent PUT call.

func (*ConfluenceClient) CreateUser added in v0.0.9

func (c *ConfluenceClient) CreateUser(ctx context.Context, username, email, fullName, password string) (string, *v2.RateLimitDescription, error)

func (*ConfluenceClient) GetGroups

func (c *ConfluenceClient) GetGroups(
	ctx context.Context,
	pageToken string,
) (
	[]ConfluenceGroup,
	string,
	*v2.RateLimitDescription,
	error,
)

GetGroups uses pagination to get a list of groups from the global list.

func (*ConfluenceClient) GetGroupsByUserKey added in v0.0.7

func (c *ConfluenceClient) GetGroupsByUserKey(
	ctx context.Context,
	pageToken string,
	userKey string,
) (
	[]ConfluenceGroup,
	string,
	*v2.RateLimitDescription,
	error,
)

GetGroupsByUserKey uses pagination to get a list of groups that a given user is member of.

func (*ConfluenceClient) GetSpacePermissions

func (c *ConfluenceClient) GetSpacePermissions(
	ctx context.Context,
	spaceKey string,
) (
	[]ConfluenceSpacePermission,
	*v2.RateLimitDescription,
	error,
)

func (*ConfluenceClient) GetSpaces

func (c *ConfluenceClient) GetSpaces(
	ctx context.Context,
	pageToken string,
) (
	[]ConfluenceSpace,
	string,
	*v2.RateLimitDescription,
	error,
)

GetSpaces uses pagination to get a list of spaces from the global list.

func (*ConfluenceClient) GetUserByKey

func (c *ConfluenceClient) GetUserByKey(ctx context.Context, userKey string) (*ConfluenceUser, error)

func (*ConfluenceClient) GetUsers

func (c *ConfluenceClient) GetUsers(
	ctx context.Context,
	pageToken string,
) (
	[]ConfluenceUser,
	string,
	*v2.RateLimitDescription,
	error,
)

GetUsers uses pagination to get a list of users from the global list.

func (*ConfluenceClient) RemoveGroupMember

func (c *ConfluenceClient) RemoveGroupMember(
	ctx context.Context,
	username string,
	groupName string,
) (
	*v2.RateLimitDescription,
	error,
)

func (*ConfluenceClient) RemoveSpace

func (c *ConfluenceClient) RemoveSpace(
	ctx context.Context,
	key string,
) (
	*v2.RateLimitDescription,
	error,
)

func (*ConfluenceClient) UpdateSpacePermissions

func (c *ConfluenceClient) UpdateSpacePermissions(ctx context.Context, operations []PermissionOperation, spaceKey, userKey, groupName string) (*v2.RateLimitDescription, error)

func (*ConfluenceClient) Verify

func (c *ConfluenceClient) Verify(ctx context.Context) error

Verify returns an error if the current user isn't found.

type ConfluenceGroup

type ConfluenceGroup struct {
	Name string `json:"name"`
	Type string `json:"type"`
}

type ConfluenceService added in v0.0.7

type ConfluenceService interface {
	GetUsers(ctx context.Context, pageToken string) ([]ConfluenceUser, string, *v2.RateLimitDescription, error)
	GetUserByKey(ctx context.Context, userKey string) (*ConfluenceUser, error)
	GetGroups(ctx context.Context, pageToken string) ([]ConfluenceGroup, string, *v2.RateLimitDescription, error)
	GetGroupsByUserKey(ctx context.Context, pageToken, userKey string) ([]ConfluenceGroup, string, *v2.RateLimitDescription, error)
	GetSpaces(ctx context.Context, pageToken string) ([]ConfluenceSpace, string, *v2.RateLimitDescription, error)
	GetSpacePermissions(ctx context.Context, spaceKey string) ([]ConfluenceSpacePermission, *v2.RateLimitDescription, error)
	UpdateSpacePermissions(ctx context.Context, currentOperations []PermissionOperation, spaceKey string, userKey string, groupName string) (*v2.RateLimitDescription, error)
	AddGroupMember(ctx context.Context, userKey, groupName string) (*v2.RateLimitDescription, error)
	RemoveGroupMember(ctx context.Context, userKey, groupName string) (*v2.RateLimitDescription, error)
	CreateUser(ctx context.Context, username string, email string, fullname string, password string) (string, *v2.RateLimitDescription, error)
}

ConfluenceService defines the interface for group operations.

func NewConfluenceService added in v0.0.7

func NewConfluenceService(client ConfluenceClient) ConfluenceService

type ConfluenceServiceImpl added in v0.0.7

type ConfluenceServiceImpl struct {
	// contains filtered or unexported fields
}

ConfluenceServiceImpl is the default implementation that calls the actual API.

func (*ConfluenceServiceImpl) AddGroupMember added in v0.0.7

func (s *ConfluenceServiceImpl) AddGroupMember(ctx context.Context, userKey, groupName string) (*v2.RateLimitDescription, error)

func (*ConfluenceServiceImpl) CreateUser added in v0.0.9

func (s *ConfluenceServiceImpl) CreateUser(ctx context.Context, username, email, fullname, password string) (string, *v2.RateLimitDescription, error)

func (*ConfluenceServiceImpl) GetGroups added in v0.0.7

func (*ConfluenceServiceImpl) GetGroupsByUserKey added in v0.0.7

func (s *ConfluenceServiceImpl) GetGroupsByUserKey(ctx context.Context, pageToken, userKey string) ([]ConfluenceGroup, string, *v2.RateLimitDescription, error)

func (*ConfluenceServiceImpl) GetSpacePermissions added in v0.0.7

func (*ConfluenceServiceImpl) GetSpaces added in v0.0.7

func (*ConfluenceServiceImpl) GetUserByKey added in v0.0.7

func (s *ConfluenceServiceImpl) GetUserByKey(ctx context.Context, userKey string) (*ConfluenceUser, error)

func (*ConfluenceServiceImpl) GetUsers added in v0.0.7

func (*ConfluenceServiceImpl) RemoveGroupMember added in v0.0.7

func (s *ConfluenceServiceImpl) RemoveGroupMember(ctx context.Context, userKey, groupName string) (*v2.RateLimitDescription, error)

func (*ConfluenceServiceImpl) UpdateSpacePermissions added in v0.0.7

func (s *ConfluenceServiceImpl) UpdateSpacePermissions(
	ctx context.Context,
	currentOperations []PermissionOperation,
	spaceKey string,
	userKey string,
	groupName string,
) (*v2.RateLimitDescription, error)

type ConfluenceSpace

type ConfluenceSpace struct {
	Id          int                        `json:"id"`
	Description ConfluenceSpaceDescription `json:"description"`
	Key         string                     `json:"key"`
	Name        string                     `json:"name"`
	Type        string                     `json:"type"`
}

type ConfluenceSpaceDescription

type ConfluenceSpaceDescription struct {
	Plain ConfluenceSpaceDescriptionValue `json:"plain"`
}

type ConfluenceSpaceDescriptionValue

type ConfluenceSpaceDescriptionValue struct {
	Value          string `json:"value"`
	Representation string `json:"representation"`
}

type ConfluenceSpaceEntitlement

type ConfluenceSpaceEntitlement struct {
	DisplayName string
	Key         string
	Name        string
}

type ConfluenceSpacePermission

type ConfluenceSpacePermission struct {
	Operation PermissionOperation `json:"operation,omitempty"`
	Subject   PermissionSubject   `json:"subject,omitempty"`
	SpaceKey  string              `json:"spaceKey,omitempty"`
}

type ConfluenceUser

type ConfluenceUser struct {
	DisplayName string `json:"displayName"`
	Type        string `json:"type"`
	UserKey     string `json:"userKey"`
	Username    string `json:"username"`
}

type MockConfluenceService added in v0.0.7

type MockConfluenceService struct {
	GetUsersFunc               func(ctx context.Context, pageToken string) ([]ConfluenceUser, string, *v2.RateLimitDescription, error)
	GetUserByKeyFunc           func(ctx context.Context, userKey string) (*ConfluenceUser, error)
	GetGroupsFunc              func(ctx context.Context, pageToken string) ([]ConfluenceGroup, string, *v2.RateLimitDescription, error)
	GetGroupsByUserKeyFunc     func(ctx context.Context, pageToken, userKey string) ([]ConfluenceGroup, string, *v2.RateLimitDescription, error)
	GetSpacesFunc              func(ctx context.Context, pageToken string) ([]ConfluenceSpace, string, *v2.RateLimitDescription, error)
	GetSpacePermissionsFunc    func(ctx context.Context, spaceKey string) ([]ConfluenceSpacePermission, *v2.RateLimitDescription, error)
	UpdateSpacePermissionsFunc func(ctx context.Context, currentOperations []PermissionOperation, spaceKey string, userKey string, groupName string) (*v2.RateLimitDescription, error)
	AddGroupMemberFunc         func(ctx context.Context, userKey, groupName string) (*v2.RateLimitDescription, error)
	RemoveGroupMemberFunc      func(ctx context.Context, userKey, groupName string) (*v2.RateLimitDescription, error)
	CreateUserFunc             func(ctx context.Context, username string, email string, fullname string, password string) (string, *v2.RateLimitDescription, error)
}

MockConfluenceService is a mock implementation of the ConfluenceService interface for testing.

func (*MockConfluenceService) AddGroupMember added in v0.0.7

func (m *MockConfluenceService) AddGroupMember(ctx context.Context, userKey, groupName string) (*v2.RateLimitDescription, error)

func (*MockConfluenceService) CreateUser added in v0.0.9

func (m *MockConfluenceService) CreateUser(ctx context.Context, username string, email string, fullname string, password string) (string, *v2.RateLimitDescription, error)

func (*MockConfluenceService) GetGroups added in v0.0.7

func (*MockConfluenceService) GetGroupsByUserKey added in v0.0.7

func (m *MockConfluenceService) GetGroupsByUserKey(ctx context.Context, pageToken, userKey string) ([]ConfluenceGroup, string, *v2.RateLimitDescription, error)

func (*MockConfluenceService) GetSpacePermissions added in v0.0.7

func (*MockConfluenceService) GetSpaces added in v0.0.7

func (*MockConfluenceService) GetUserByKey added in v0.0.7

func (m *MockConfluenceService) GetUserByKey(ctx context.Context, userKey string) (*ConfluenceUser, error)

func (*MockConfluenceService) GetUsers added in v0.0.7

func (*MockConfluenceService) RemoveGroupMember added in v0.0.7

func (m *MockConfluenceService) RemoveGroupMember(ctx context.Context, userKey, groupName string) (*v2.RateLimitDescription, error)

func (*MockConfluenceService) UpdateSpacePermissions added in v0.0.7

func (m *MockConfluenceService) UpdateSpacePermissions(
	ctx context.Context,
	currentOperations []PermissionOperation,
	spaceKey string,
	userKey string,
	groupName string,
) (*v2.RateLimitDescription, error)

type PermissionOperation

type PermissionOperation struct {
	TargetType   string `json:"targetType"`
	OperationKey string `json:"operationKey"`
}

type PermissionSubject

type PermissionSubject struct {
	Type PermissionType `json:"type,omitempty"`

	// For groups:
	Name string `json:"name,omitempty"`

	// For users:
	UserKey string `json:"userKey,omitempty"`

	// For others:
	DisplayName string `json:"displayName,omitempty"`
}

PermissionSubject can be one of several types of resources. The ones we care about are: user (type: "user") or a group (type: "group").

type PermissionType

type PermissionType string
const (
	PermissionTypeUser  PermissionType = "user"
	PermissionTypeGroup PermissionType = "group"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL