| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- package handler
- import (
- "context"
- "io"
- "log/slog"
- "github.com/mk6i/retro-aim-server/server/oscar"
- "github.com/mk6i/retro-aim-server/server/oscar/middleware"
- "github.com/mk6i/retro-aim-server/state"
- "github.com/mk6i/retro-aim-server/wire"
- )
- type BARTService interface {
- UpsertItem(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x10_0x02_BARTUploadQuery) (wire.SNACMessage, error)
- RetrieveItem(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, inBody wire.SNAC_0x10_0x04_BARTDownloadQuery) (wire.SNACMessage, error)
- }
- func NewBARTHandler(logger *slog.Logger, bartService BARTService) BARTHandler {
- return BARTHandler{
- BARTService: bartService,
- RouteLogger: middleware.RouteLogger{
- Logger: logger,
- },
- }
- }
- type BARTHandler struct {
- BARTService
- middleware.RouteLogger
- }
- func (h BARTHandler) UploadQuery(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, r io.Reader, rw oscar.ResponseWriter) error {
- inBody := wire.SNAC_0x10_0x02_BARTUploadQuery{}
- if err := wire.UnmarshalBE(&inBody, r); err != nil {
- return err
- }
- outSNAC, err := h.UpsertItem(ctx, sess, inFrame, inBody)
- if err != nil {
- return err
- }
- h.LogRequestAndResponse(ctx, inFrame, outSNAC, outSNAC.Frame, outSNAC.Body)
- return rw.SendSNAC(outSNAC.Frame, outSNAC.Body)
- }
- func (h BARTHandler) DownloadQuery(ctx context.Context, sess *state.Session, inFrame wire.SNACFrame, r io.Reader, rw oscar.ResponseWriter) error {
- inBody := wire.SNAC_0x10_0x04_BARTDownloadQuery{}
- if err := wire.UnmarshalBE(&inBody, r); err != nil {
- return err
- }
- outSNAC, err := h.RetrieveItem(ctx, sess, inFrame, inBody)
- if err != nil {
- return err
- }
- h.LogRequestAndResponse(ctx, inFrame, outSNAC, outSNAC.Frame, outSNAC.Body)
- return rw.SendSNAC(outSNAC.Frame, outSNAC.Body)
- }
|