common

package
v0.15.0 Latest Latest
Warning

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

Go to latest
Published: Apr 10, 2024 License: AGPL-3.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Processor

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

Processor provides a processor with logic common to multiple logical domains of the processing subsection of the codebase.

func New

func New(
	state *state.State,
	converter *typeutils.Converter,
	federator *federation.Federator,
	filter *visibility.Filter,
) Processor

New returns a new Processor instance.

func (*Processor) GetAPIAccount

func (p *Processor) GetAPIAccount(
	ctx context.Context,
	requester *gtsmodel.Account,
	target *gtsmodel.Account,
) (
	apiAcc *apimodel.Account,
	errWithCode gtserror.WithCode,
)

GetAPIAccount fetches the appropriate API account model depending on whether requester = target.

func (*Processor) GetAPIAccountBlocked

func (p *Processor) GetAPIAccountBlocked(
	ctx context.Context,
	targetAcc *gtsmodel.Account,
) (
	apiAcc *apimodel.Account,
	errWithCode gtserror.WithCode,
)

GetAPIAccountBlocked fetches the limited "blocked" account model for given target.

func (*Processor) GetAPIAccountSensitive added in v0.14.0

func (p *Processor) GetAPIAccountSensitive(
	ctx context.Context,
	targetAcc *gtsmodel.Account,
) (
	apiAcc *apimodel.Account,
	errWithCode gtserror.WithCode,
)

GetAPIAccountSensitive fetches the "sensitive" account model for the given target. *BE CAREFUL!* Only return a sensitive account if targetAcc == account making the request.

func (*Processor) GetAPIStatus

func (p *Processor) GetAPIStatus(
	ctx context.Context,
	requester *gtsmodel.Account,
	target *gtsmodel.Status,
) (
	apiStatus *apimodel.Status,
	errWithCode gtserror.WithCode,
)

GetAPIStatus fetches the appropriate API status model for target.

func (*Processor) GetTargetAccountBy

func (p *Processor) GetTargetAccountBy(
	ctx context.Context,
	requester *gtsmodel.Account,
	getTargetFromDB func() (*gtsmodel.Account, error),
) (
	account *gtsmodel.Account,
	visible bool,
	errWithCode gtserror.WithCode,
)

GetTargetAccountBy fetches the target account with db load function, given the authorized (or, nil) requester's account. This returns an approprate gtserror.WithCode accounting (ha) for not found and visibility to requester.

func (*Processor) GetTargetAccountByID

func (p *Processor) GetTargetAccountByID(
	ctx context.Context,
	requester *gtsmodel.Account,
	targetID string,
) (
	account *gtsmodel.Account,
	visible bool,
	errWithCode gtserror.WithCode,
)

GetTargetAccountByID is a call-through to GetTargetAccountBy() using the db GetAccountByID() function.

func (*Processor) GetTargetStatusBy

func (p *Processor) GetTargetStatusBy(
	ctx context.Context,
	requester *gtsmodel.Account,
	getTargetFromDB func() (*gtsmodel.Status, error),
	window *dereferencing.FreshnessWindow,
) (
	status *gtsmodel.Status,
	visible bool,
	errWithCode gtserror.WithCode,
)

GetTargetStatusBy fetches the target status with db load function, given the authorized (or, nil) requester's account. This returns an approprate gtserror.WithCode accounting for not found and visibility to requester.

window can be used to force refresh of the target if it's deemed to be stale. Falls back to default window if nil.

func (*Processor) GetVisibleAPIAccounts

func (p *Processor) GetVisibleAPIAccounts(
	ctx context.Context,
	requester *gtsmodel.Account,
	next func(int) *gtsmodel.Account,
	length int,
) []*apimodel.Account

GetVisibleAPIAccounts converts an array of gtsmodel.Accounts (inputted by next function) into public API model accounts, checking first for visibility. Please note that all errors will be logged at ERROR level, but will not be returned. Callers are likely to run into show-stopping errors in the lead-up to this function, whereas calling this should not be a show-stopper.

func (*Processor) GetVisibleAPIAccountsPaged

func (p *Processor) GetVisibleAPIAccountsPaged(
	ctx context.Context,
	requester *gtsmodel.Account,
	next func(int) *gtsmodel.Account,
	length int,
) []interface{}

GetVisibleAPIAccountsPaged is functionally equivalent to GetVisibleAPIAccounts(), except the accounts are returned as a converted slice of accounts as interface{}.

func (*Processor) GetVisibleAPIStatuses

func (p *Processor) GetVisibleAPIStatuses(
	ctx context.Context,
	requester *gtsmodel.Account,
	next func(int) *gtsmodel.Status,
	length int,
) []*apimodel.Status

GetVisibleAPIStatuses converts an array of gtsmodel.Status (inputted by next function) into API model statuses, checking first for visibility. Please note that all errors will be logged at ERROR level, but will not be returned. Callers are likely to run into show-stopping errors in the lead-up to this function, whereas calling this should not be a show-stopper.

func (*Processor) GetVisibleAPIStatusesPaged

func (p *Processor) GetVisibleAPIStatusesPaged(
	ctx context.Context,
	requester *gtsmodel.Account,
	next func(int) *gtsmodel.Status,
	length int,
) []interface{}

GetVisibleAPIStatusesPaged is functionally equivalent to GetVisibleAPIStatuses(), except the statuses are returned as a converted slice of statuses as interface{}.

func (*Processor) GetVisibleTargetAccount

func (p *Processor) GetVisibleTargetAccount(
	ctx context.Context,
	requester *gtsmodel.Account,
	targetID string,
) (
	account *gtsmodel.Account,
	errWithCode gtserror.WithCode,
)

GetVisibleTargetAccount calls GetTargetAccountByID(), but converts a non-visible result to not-found error.

func (*Processor) GetVisibleTargetStatus

func (p *Processor) GetVisibleTargetStatus(
	ctx context.Context,
	requester *gtsmodel.Account,
	targetID string,
	window *dereferencing.FreshnessWindow,
) (
	status *gtsmodel.Status,
	errWithCode gtserror.WithCode,
)

GetVisibleTargetStatus calls GetVisibleTargetStatusBy(), passing in a database function that fetches by status ID.

window can be used to force refresh of the target if it's deemed to be stale. Falls back to default window if nil.

func (*Processor) GetVisibleTargetStatusBy added in v0.13.0

func (p *Processor) GetVisibleTargetStatusBy(
	ctx context.Context,
	requester *gtsmodel.Account,
	getTargetFromDB func() (*gtsmodel.Status, error),
	window *dereferencing.FreshnessWindow,
) (
	status *gtsmodel.Status,
	errWithCode gtserror.WithCode,
)

GetVisibleTargetStatus calls GetTargetStatusBy(), but converts a non-visible result to not-found error.

window can be used to force refresh of the target if it's deemed to be stale. Falls back to default window if nil.

func (*Processor) InvalidateTimelinedStatus

func (p *Processor) InvalidateTimelinedStatus(ctx context.Context, accountID string, statusID string) error

InvalidateTimelinedStatus is a shortcut function for invalidating the cached representation one status in the home timeline and all list timelines of the given accountID. It should only be called in cases where a status update does *not* need to be passed into the processor via the worker queue, since such invalidation will, in that case, be handled by the processor instead.

func (*Processor) UnwrapIfBoost added in v0.13.0

func (p *Processor) UnwrapIfBoost(
	ctx context.Context,
	requester *gtsmodel.Account,
	status *gtsmodel.Status,
) (*gtsmodel.Status, gtserror.WithCode)

UnwrapIfBoost "unwraps" the given status if it's a boost wrapper, by returning the boosted status it targets (pending visibility checks).

Just returns the input status if it's not a boost.

Jump to

Keyboard shortcuts

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