Skip to content

Commit ffa6e14

Browse files
committed
plumb context across all layers
1 parent bcaa847 commit ffa6e14

File tree

89 files changed

+3719
-3547
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

89 files changed

+3719
-3547
lines changed

.mockery.yaml

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,15 @@ packages:
2525
filename: "mock_user_manager_test.go"
2626
github.com/mk6i/retro-aim-server/server/http:
2727
interfaces:
28+
AccountManager:
29+
config:
30+
filename: "mock_account_manager_test.go"
2831
AccountRetriever:
2932
config:
30-
filename: "mock_chat_account_retriever_test.go"
31-
BARTRetriever:
33+
filename: "mock_account_retriever_test.go"
34+
BuddyIconRetriever:
3235
config:
33-
filename: "mock_bart_retriever_test.go"
36+
filename: "mock_buddy_icon_retriever_test.go"
3437
ChatRoomCreator:
3538
config:
3639
filename: "mock_chat_room_creator_test.go"
@@ -62,40 +65,40 @@ packages:
6265
interfaces:
6366
AdminService:
6467
config:
65-
filename: "mock_admin_test.go"
68+
filename: "mock_admin_service_test.go"
6669
BARTService:
6770
config:
68-
filename: "mock_bart_test.go"
71+
filename: "mock_bart_service_test.go"
6972
BuddyService:
7073
config:
71-
filename: "mock_buddy_test.go"
74+
filename: "mock_buddy_service_test.go"
7275
ChatNavService:
7376
config:
74-
filename: "mock_chat_nav_test.go"
77+
filename: "mock_chat_nav_service_test.go"
7578
ChatService:
7679
config:
77-
filename: "mock_chat_test.go"
80+
filename: "mock_chat_service_test.go"
7881
FeedbagService:
7982
config:
80-
filename: "mock_feedbag_test.go"
83+
filename: "mock_feedbag_service_test.go"
8184
ICBMService:
8285
config:
83-
filename: "mock_icbm_test.go"
86+
filename: "mock_icbm_service_test.go"
8487
ICQService:
8588
config:
8689
filename: "mock_icq_service_test.go"
8790
LocateService:
8891
config:
89-
filename: "mock_locate_test.go"
92+
filename: "mock_locate_service_test.go"
9093
ODirService:
9194
config:
9295
filename: "mock_odir_service_test.go"
9396
OServiceService:
9497
config:
95-
filename: "mock_oservice_test.go"
98+
filename: "mock_oservice_service_test.go"
9699
PermitDenyService:
97100
config:
98-
filename: "mock_permit_deny_test.go"
101+
filename: "mock_permit_deny_service_test.go"
99102
UserLookupService:
100103
config:
101104
filename: "mock_user_lookup_service_test.go"
@@ -104,15 +107,15 @@ packages:
104107
AccountManager:
105108
config:
106109
filename: "mock_account_manager_test.go"
107-
BARTManager:
110+
BuddyIconManager:
108111
config:
109-
filename: "mock_bart_manager_test.go"
112+
filename: "mock_buddy_icon_manager_test.go"
110113
buddyBroadcaster:
111114
config:
112115
filename: "mock_buddy_broadcaster_test.go"
113-
BuddyListRetriever:
116+
RelationshipFetcher:
114117
config:
115-
filename: "mock_buddy_list_retriever_test.go"
118+
filename: "mock_relationship_fetcher_test.go"
116119
ChatMessageRelayer:
117120
config:
118121
filename: "mock_chat_message_relayer_test.go"
@@ -137,9 +140,9 @@ packages:
137140
LegacyBuddyListManager:
138141
config:
139142
filename: "mock_legacy_buddy_list_manager_test.go"
140-
LocalBuddyListManager:
143+
ClientSideBuddyListManager:
141144
config:
142-
filename: "mock_local_buddy_list_manager_test.go"
145+
filename: "mock_client_side_buddy_list_manager_test.go"
143146
MessageRelayer:
144147
config:
145148
filename: "mock_message_relayer_test.go"

cmd/server/factory.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ func Admin(deps Container) oscar.AdminServer {
6565
logger := deps.logger.With("svc", "ADMIN")
6666

6767
adminService := foodgroup.NewAdminService(
68+
deps.sqLiteUserStore,
6869
deps.sqLiteUserStore,
6970
deps.sqLiteUserStore,
7071
deps.inMemorySessionManager,
@@ -87,6 +88,7 @@ func Admin(deps Container) oscar.AdminServer {
8788
deps.inMemorySessionManager,
8889
deps.sqLiteUserStore,
8990
deps.inMemorySessionManager,
91+
deps.sqLiteUserStore,
9092
)
9193

9294
return oscar.AdminServer{
@@ -123,6 +125,7 @@ func Alert(deps Container) oscar.BOSServer {
123125
sessionManager,
124126
deps.sqLiteUserStore,
125127
sessionManager,
128+
deps.sqLiteUserStore,
126129
)
127130

128131
return oscar.BOSServer{
@@ -188,6 +191,7 @@ func BART(deps Container) oscar.BOSServer {
188191
sessionManager,
189192
deps.sqLiteUserStore,
190193
sessionManager,
194+
deps.sqLiteUserStore,
191195
)
192196

193197
return oscar.BOSServer{
@@ -229,6 +233,7 @@ func BOS(deps Container) oscar.BOSServer {
229233
deps.sqLiteUserStore,
230234
deps.sqLiteUserStore,
231235
deps.inMemorySessionManager,
236+
deps.sqLiteUserStore,
232237
)
233238
chatNavService := foodgroup.NewChatNavService(logger, deps.sqLiteUserStore)
234239
feedbagService := foodgroup.NewFeedbagService(
@@ -240,12 +245,14 @@ func BOS(deps Container) oscar.BOSServer {
240245
deps.inMemorySessionManager,
241246
)
242247
permitDenyService := foodgroup.NewPermitDenyService(
248+
deps.sqLiteUserStore,
243249
deps.sqLiteUserStore,
244250
deps.sqLiteUserStore,
245251
deps.inMemorySessionManager,
246252
deps.inMemorySessionManager,
247253
)
248254
icbmService := foodgroup.NewICBMService(
255+
deps.sqLiteUserStore,
249256
deps.inMemorySessionManager,
250257
deps.sqLiteUserStore,
251258
deps.sqLiteUserStore,
@@ -254,6 +261,7 @@ func BOS(deps Container) oscar.BOSServer {
254261
icqService := foodgroup.NewICQService(deps.inMemorySessionManager, deps.sqLiteUserStore, deps.sqLiteUserStore,
255262
logger, deps.inMemorySessionManager, deps.sqLiteUserStore)
256263
locateService := foodgroup.NewLocateService(
264+
deps.sqLiteUserStore,
257265
deps.inMemorySessionManager,
258266
deps.sqLiteUserStore,
259267
deps.sqLiteUserStore,
@@ -267,6 +275,7 @@ func BOS(deps Container) oscar.BOSServer {
267275
deps.sqLiteUserStore,
268276
deps.sqLiteUserStore,
269277
deps.inMemorySessionManager,
278+
deps.sqLiteUserStore,
270279
)
271280
userLookupService := foodgroup.NewUserLookupService(deps.sqLiteUserStore)
272281

@@ -319,6 +328,7 @@ func Chat(deps Container) oscar.ChatServer {
319328
deps.chatSessionManager,
320329
deps.sqLiteUserStore,
321330
sessionManager,
331+
deps.sqLiteUserStore,
322332
)
323333

324334
return oscar.ChatServer{
@@ -355,6 +365,7 @@ func ChatNav(deps Container) oscar.BOSServer {
355365
sessionManager,
356366
deps.sqLiteUserStore,
357367
sessionManager,
368+
deps.sqLiteUserStore,
358369
)
359370

360371
return oscar.BOSServer{
@@ -422,6 +433,7 @@ func TOC(deps Container) toc.Server {
422433
ListenAddr: net.JoinHostPort(deps.cfg.TOCHost, deps.cfg.TOCPort),
423434
BOSProxy: toc.OSCARProxy{
424435
AdminService: foodgroup.NewAdminService(
436+
deps.sqLiteUserStore,
425437
deps.sqLiteUserStore,
426438
deps.sqLiteUserStore,
427439
deps.inMemorySessionManager,
@@ -444,16 +456,19 @@ func TOC(deps Container) toc.Server {
444456
deps.sqLiteUserStore,
445457
deps.sqLiteUserStore,
446458
deps.inMemorySessionManager,
459+
deps.sqLiteUserStore,
447460
),
448461
CookieBaker: deps.hmacCookieBaker,
449462
DirSearchService: foodgroup.NewODirService(logger, deps.sqLiteUserStore),
450463
ICBMService: foodgroup.NewICBMService(
464+
deps.sqLiteUserStore,
451465
deps.inMemorySessionManager,
452466
deps.sqLiteUserStore,
453467
deps.sqLiteUserStore,
454468
deps.inMemorySessionManager,
455469
),
456470
LocateService: foodgroup.NewLocateService(
471+
deps.sqLiteUserStore,
457472
deps.inMemorySessionManager,
458473
deps.sqLiteUserStore,
459474
deps.sqLiteUserStore,
@@ -468,8 +483,10 @@ func TOC(deps Container) toc.Server {
468483
deps.sqLiteUserStore,
469484
deps.sqLiteUserStore,
470485
deps.inMemorySessionManager,
486+
deps.sqLiteUserStore,
471487
),
472488
PermitDenyService: foodgroup.NewPermitDenyService(
489+
deps.sqLiteUserStore,
473490
deps.sqLiteUserStore,
474491
deps.sqLiteUserStore,
475492
deps.inMemorySessionManager,
@@ -485,6 +502,7 @@ func TOC(deps Container) toc.Server {
485502
deps.chatSessionManager,
486503
deps.sqLiteUserStore,
487504
sessionManager,
505+
deps.sqLiteUserStore,
488506
),
489507
ChatNavService: foodgroup.NewChatNavService(logger, deps.sqLiteUserStore),
490508
},

foodgroup/admin.go

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,15 @@ import (
1313
// NewAdminService creates an instance of AdminService.
1414
func NewAdminService(
1515
accountManager AccountManager,
16-
buddyListRetriever BuddyListRetriever,
16+
buddyIconManager BuddyIconManager,
17+
relationshipFetcher RelationshipFetcher,
1718
messageRelayer MessageRelayer,
1819
sessionRetriever SessionRetriever,
1920
logger *slog.Logger,
2021
) *AdminService {
2122
return &AdminService{
2223
accountManager: accountManager,
23-
buddyBroadcaster: newBuddyNotifier(buddyListRetriever, messageRelayer, sessionRetriever),
24+
buddyBroadcaster: newBuddyNotifier(buddyIconManager, relationshipFetcher, messageRelayer, sessionRetriever),
2425
messageRelayer: messageRelayer,
2526
logger: logger,
2627
}
@@ -52,21 +53,21 @@ func (s AdminService) ConfirmRequest(ctx context.Context, sess *state.Session, f
5253
}
5354
}
5455

55-
_, err := s.accountManager.EmailAddressByName(sess.IdentScreenName())
56+
_, err := s.accountManager.EmailAddress(ctx, sess.IdentScreenName())
5657
if errors.Is(err, state.ErrNoEmailAddress) {
5758
return getAdminConfirmReply(wire.AdminAcctConfirmStatusServerError), nil
5859
} else if err != nil {
5960
return wire.SNACMessage{}, err
6061
}
6162

62-
accountConfirmed, err := s.accountManager.ConfirmStatusByName(sess.IdentScreenName())
63+
accountConfirmed, err := s.accountManager.ConfirmStatus(ctx, sess.IdentScreenName())
6364
if err != nil {
6465
return wire.SNACMessage{}, err
6566
}
6667
if accountConfirmed {
6768
return getAdminConfirmReply(wire.AdminAcctConfirmStatusAlreadyConfirmed), nil
6869
}
69-
if err := s.accountManager.UpdateConfirmStatus(true, sess.IdentScreenName()); err != nil {
70+
if err := s.accountManager.UpdateConfirmStatus(ctx, sess.IdentScreenName(), true); err != nil {
7071
return wire.SNACMessage{}, err
7172
}
7273
sess.ClearUserInfoFlag(wire.OServiceUserFlagUnconfirmed)
@@ -77,7 +78,7 @@ func (s AdminService) ConfirmRequest(ctx context.Context, sess *state.Session, f
7778
}
7879

7980
// InfoQuery returns the requested information about the account
80-
func (s AdminService) InfoQuery(_ context.Context, sess *state.Session, frame wire.SNACFrame, body wire.SNAC_0x07_0x02_AdminInfoQuery) (wire.SNACMessage, error) {
81+
func (s AdminService) InfoQuery(ctx context.Context, sess *state.Session, frame wire.SNACFrame, body wire.SNAC_0x07_0x02_AdminInfoQuery) (wire.SNACMessage, error) {
8182
// getAdminInfoReply returns an AdminInfoReply SNAC
8283
var getAdminInfoReply = func(tlvList wire.TLVList) wire.SNACMessage {
8384
return wire.SNACMessage{
@@ -98,7 +99,7 @@ func (s AdminService) InfoQuery(_ context.Context, sess *state.Session, frame wi
9899
tlvList := wire.TLVList{}
99100

100101
if _, hasRegStatus := body.TLVRestBlock.Bytes(wire.AdminTLVRegistrationStatus); hasRegStatus {
101-
regStatus, err := s.accountManager.RegStatusByName(sess.IdentScreenName())
102+
regStatus, err := s.accountManager.RegStatus(ctx, sess.IdentScreenName())
102103
if err != nil {
103104
return wire.SNACMessage{}, err
104105
}
@@ -107,7 +108,7 @@ func (s AdminService) InfoQuery(_ context.Context, sess *state.Session, frame wi
107108
}
108109

109110
if _, hasEmail := body.TLVRestBlock.Bytes(wire.AdminTLVEmailAddress); hasEmail {
110-
e, err := s.accountManager.EmailAddressByName(sess.IdentScreenName())
111+
e, err := s.accountManager.EmailAddress(ctx, sess.IdentScreenName())
111112
if errors.Is(err, state.ErrNoEmailAddress) {
112113
tlvList.Append(wire.NewTLVBE(wire.AdminTLVEmailAddress, ""))
113114
} else if err != nil {
@@ -205,7 +206,7 @@ func (s AdminService) InfoChangeRequest(ctx context.Context, sess *state.Session
205206
tlvList.Append(wire.NewTLVBE(wire.AdminTLVUrl, ""))
206207
return getAdminChangeReply(tlvList), nil
207208
}
208-
if err := s.accountManager.UpdateDisplayScreenName(proposedName); err != nil {
209+
if err := s.accountManager.UpdateDisplayScreenName(ctx, proposedName); err != nil {
209210
return wire.SNACMessage{}, err
210211
}
211212
sess.SetDisplayScreenName(proposedName)
@@ -233,7 +234,7 @@ func (s AdminService) InfoChangeRequest(ctx context.Context, sess *state.Session
233234
return getAdminChangeReply(tlvList), nil
234235

235236
}
236-
if err := s.accountManager.UpdateEmailAddress(e, sess.IdentScreenName()); err != nil {
237+
if err := s.accountManager.UpdateEmailAddress(ctx, sess.IdentScreenName(), e); err != nil {
237238
return wire.SNACMessage{}, err
238239
}
239240
tlvList.Append(wire.NewTLVBE(wire.AdminTLVEmailAddress, e.Address))
@@ -246,7 +247,7 @@ func (s AdminService) InfoChangeRequest(ctx context.Context, sess *state.Session
246247
wire.AdminInfoRegStatusFullDisclosure,
247248
wire.AdminInfoRegStatusLimitDisclosure,
248249
wire.AdminInfoRegStatusNoDisclosure:
249-
if err := s.accountManager.UpdateRegStatus(regStatus, sess.IdentScreenName()); err != nil {
250+
if err := s.accountManager.UpdateRegStatus(ctx, sess.IdentScreenName(), regStatus); err != nil {
250251
return wire.SNACMessage{}, err
251252
}
252253
tlvList.Append(wire.NewTLVBE(wire.AdminTLVRegistrationStatus, regStatus))
@@ -267,7 +268,7 @@ func (s AdminService) InfoChangeRequest(ctx context.Context, sess *state.Session
267268
return getAdminChangeReply(tlvList), nil
268269
}
269270

270-
u, err := s.accountManager.User(sess.IdentScreenName())
271+
u, err := s.accountManager.User(ctx, sess.IdentScreenName())
271272
if err != nil || u == nil {
272273
if err != nil {
273274
s.logger.ErrorContext(ctx, "accountManager.User: runtime error", "err", err)
@@ -283,7 +284,7 @@ func (s AdminService) InfoChangeRequest(ctx context.Context, sess *state.Session
283284
return getAdminChangeReply(tlvList), nil
284285
}
285286

286-
if err := s.accountManager.SetUserPassword(sess.IdentScreenName(), newPass); err != nil {
287+
if err := s.accountManager.SetUserPassword(ctx, sess.IdentScreenName(), newPass); err != nil {
287288
if errors.Is(err, state.ErrPasswordInvalid) {
288289
tlvList.Append(wire.NewTLVBE(wire.AdminTLVErrorCode, wire.AdminInfoErrorInvalidPasswordLength))
289290
} else {

0 commit comments

Comments
 (0)