| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- package webapi
- import (
- "context"
- "time"
- "github.com/mk6i/open-oscar-server/config"
- "github.com/mk6i/open-oscar-server/state"
- "github.com/mk6i/open-oscar-server/wire"
- )
- // SessionResolver resolves and refreshes Web API sessions by aimsid.
- type SessionResolver interface {
- GetSession(ctx context.Context, aimsid string) (*Session, error)
- TouchSession(ctx context.Context, aimsid string) error
- }
- // APIKeyValidator validates the dev_key a client sends as its "k" parameter.
- type APIKeyValidator interface {
- GetAPIKeyByDevKey(ctx context.Context, devKey string) (*state.WebAPIKey, error)
- }
- // AuthService cracks auth cookies and registers the BOS sessions they name.
- type AuthService interface {
- CrackCookie(authCookie []byte) (state.ServerCookie, time.Time, error)
- FLAPLogin(ctx context.Context, inFrame wire.FLAPSignonFrame, endpointCfg config.Endpoint) (wire.TLVRestBlock, error)
- RegisterBOSSession(ctx context.Context, authCookie state.ServerCookie, conf func(sess *state.Session)) (*state.SessionInstance, error)
- Signout(ctx context.Context, session *state.Session)
- }
- // BARTService stores and retrieves BART (buddy art) assets by content hash.
- type BARTService interface {
- RetrieveItem(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x10_0x04_BARTDownloadQuery) (wire.SNACMessage, error)
- UpsertItem(ctx context.Context, instance *state.SessionInstance, inFrame wire.SNACFrame, inBody wire.SNAC_0x10_0x02_BARTUploadQuery) (wire.SNACMessage, error)
- }
- // BuddyBroadcaster announces a user's arrival and departure to their watchers.
- type BuddyBroadcaster interface {
- BroadcastBuddyArrived(ctx context.Context, screenName state.IdentScreenName, userInfo wire.TLVUserInfo) error
- BroadcastBuddyDeparted(ctx context.Context, screenName state.IdentScreenName) error
- }
- // DirSearchService runs ODir member-directory searches.
- type DirSearchService interface {
- InfoQuery(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x0F_0x02_InfoQuery) (wire.SNACMessage, error)
- }
- // FeedbagService reads and edits the server-stored buddy list.
- type FeedbagService interface {
- DeleteItem(ctx context.Context, instance *state.SessionInstance, inFrame wire.SNACFrame, inBody wire.SNAC_0x13_0x0A_FeedbagDeleteItem) (*wire.SNACMessage, error)
- Query(ctx context.Context, instance *state.SessionInstance, inFrame wire.SNACFrame) (wire.SNACMessage, error)
- UpsertItem(ctx context.Context, instance *state.SessionInstance, inFrame wire.SNACFrame, items []wire.FeedbagItem) (*wire.SNACMessage, error)
- Use(ctx context.Context, instance *state.SessionInstance) error
- }
- // ICBMService sends instant messages and typing events and drains offline ones.
- type ICBMService interface {
- ChannelMsgToHost(ctx context.Context, instance *state.SessionInstance, inFrame wire.SNACFrame, inBody wire.SNAC_0x04_0x06_ICBMChannelMsgToHost) (*wire.SNACMessage, error)
- ClientEvent(ctx context.Context, instance *state.SessionInstance, inFrame wire.SNACFrame, inBody wire.SNAC_0x04_0x14_ICBMClientEvent) error
- OfflineRetrieve(ctx context.Context, instance *state.SessionInstance, inFrame wire.SNACFrame) (wire.SNACMessage, error)
- }
- // LocateService reads and writes user profiles and directory info.
- type LocateService interface {
- SetDirInfo(ctx context.Context, instance *state.SessionInstance, inFrame wire.SNACFrame, inBody wire.SNAC_0x02_0x09_LocateSetDirInfo) (wire.SNACMessage, error)
- SetInfo(ctx context.Context, instance *state.SessionInstance, inBody wire.SNAC_0x02_0x04_LocateSetInfo) error
- UserInfoQuery(ctx context.Context, instance *state.SessionInstance, inFrame wire.SNACFrame, inBody wire.SNAC_0x02_0x05_LocateUserInfoQuery) (wire.SNACMessage, error)
- DirInfo(ctx context.Context, inFrame wire.SNACFrame, inBody wire.SNAC_0x02_0x0B_LocateGetDirInfo) (wire.SNACMessage, error)
- }
- // OServiceService completes sign-on and manages rate limit subscriptions.
- type OServiceService interface {
- ClientOnline(ctx context.Context, service uint16, inBody wire.SNAC_0x01_0x02_OServiceClientOnline, instance *state.SessionInstance) error
- MonitorRateLimits(ctx context.Context, session *state.Session)
- RateParamsSubAdd(ctx context.Context, instance *state.SessionInstance, inBody wire.SNAC_0x01_0x08_OServiceRateParamsSubAdd)
- }
- // BuddyIconRetriever resolves a user's icon reference from their feedbag, which
- // is where it lives, so it resolves for offline users too.
- type BuddyIconRetriever interface {
- BuddyIconMetadata(ctx context.Context, screenName state.IdentScreenName) (*wire.BARTID, error)
- }
- // BuddyListRegistry registers a user's buddy list, making them and the users on
- // it visible to each other.
- type BuddyListRegistry interface {
- RegisterBuddyList(ctx context.Context, user state.IdentScreenName) error
- UnregisterBuddyList(ctx context.Context, user state.IdentScreenName) error
- }
- // ChatSessionManager removes a departing user from every chat room they joined.
- type ChatSessionManager interface {
- RemoveUserFromAllChats(user state.IdentScreenName)
- }
|