fix: request context to rooms manager
This commit is contained in:
parent
cc33c3f742
commit
a502ee72a0
|
@ -50,8 +50,8 @@ func (r *Room) UnmarshalBinary(data []byte) error {
|
||||||
// let's check whether it will be possible to save nested structs
|
// let's check whether it will be possible to save nested structs
|
||||||
|
|
||||||
type RoomManager interface {
|
type RoomManager interface {
|
||||||
Get(roomName string) (Room, bool, error)
|
Get(ctx context.Context, roomName string) (Room, bool, error)
|
||||||
Save(room Room) error
|
Save(ctx context.Context, room Room) error
|
||||||
Update(ctx context.Context, roomName string, f func(fromRoom Room) (toRoom Room)) error
|
Update(ctx context.Context, roomName string, f func(fromRoom Room) (toRoom Room)) error
|
||||||
Subscribe(ctx context.Context, roomName string) <-chan Room
|
Subscribe(ctx context.Context, roomName string) <-chan Room
|
||||||
}
|
}
|
||||||
|
@ -66,9 +66,9 @@ type RedisRM struct {
|
||||||
Rdb *redis.Client
|
Rdb *redis.Client
|
||||||
}
|
}
|
||||||
|
|
||||||
func (redisRM RedisRM) Get(roomName string) (Room, bool, error) {
|
func (redisRM RedisRM) Get(ctx context.Context, roomName string) (Room, bool, error) {
|
||||||
var readRoom Room
|
var readRoom Room
|
||||||
err := redisRM.Rdb.Get(context.TODO(), roomNameToRedisId(roomName)).Scan(&readRoom)
|
err := redisRM.Rdb.Get(ctx, roomNameToRedisId(roomName)).Scan(&readRoom)
|
||||||
if err == redis.Nil {
|
if err == redis.Nil {
|
||||||
return Room{}, false, nil
|
return Room{}, false, nil
|
||||||
}
|
}
|
||||||
|
@ -177,7 +177,7 @@ func (redisRM RedisRM) Update(ctx context.Context, roomName string, f func(fromR
|
||||||
return errors.New("update reached maximum amount of retries")
|
return errors.New("update reached maximum amount of retries")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (redisRM RedisRM) Save(room Room) error {
|
func (redisRM RedisRM) Save(ctx context.Context, room Room) error {
|
||||||
err := redisRM.Rdb.Set(context.TODO(), roomNameToRedisId(room.Name), &room, 0).Err() // maybe even set expiration?
|
err := redisRM.Rdb.Set(ctx, roomNameToRedisId(room.Name), &room, 0).Err() // maybe even set expiration?
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -146,7 +146,7 @@ func createRoomHandler(templateFs *embed.FS,
|
||||||
w.WriteHeader(http.StatusBadRequest)
|
w.WriteHeader(http.StatusBadRequest)
|
||||||
}
|
}
|
||||||
roomName := r.PostFormValue("roomName")
|
roomName := r.PostFormValue("roomName")
|
||||||
_, exists, _ := roomsM.Get(roomName)
|
_, exists, _ := roomsM.Get(r.Context(), roomName)
|
||||||
if exists {
|
if exists {
|
||||||
// TODO return anouther error notice
|
// TODO return anouther error notice
|
||||||
log.Printf("error, room name occupied %s", roomName)
|
log.Printf("error, room name occupied %s", roomName)
|
||||||
|
@ -171,7 +171,7 @@ func createRoomHandler(templateFs *embed.FS,
|
||||||
AllKnownPeople: map[rooms.PersonId]rooms.Person{
|
AllKnownPeople: map[rooms.PersonId]rooms.Person{
|
||||||
person.Id: person},
|
person.Id: person},
|
||||||
}
|
}
|
||||||
err = roomsM.Save(newRoom)
|
err = roomsM.Save(r.Context(), newRoom)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("what am i to do? error saving room %s", err)
|
log.Printf("what am i to do? error saving room %s", err)
|
||||||
// todo return error notice somehow
|
// todo return error notice somehow
|
||||||
|
@ -205,7 +205,7 @@ func checkRoomName(templateFs *embed.FS,
|
||||||
w.WriteHeader(http.StatusBadRequest)
|
w.WriteHeader(http.StatusBadRequest)
|
||||||
}
|
}
|
||||||
roomName := r.PostFormValue("roomName")
|
roomName := r.PostFormValue("roomName")
|
||||||
_, isFound, err := roomsM.Get(roomName)
|
_, isFound, err := roomsM.Get(r.Context(), roomName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("/login/room-name-check error finding room %s\n", err)
|
log.Printf("/login/room-name-check error finding room %s\n", err)
|
||||||
}
|
}
|
||||||
|
@ -231,7 +231,7 @@ func joinRoomHandler(templateFs *embed.FS,
|
||||||
personPass := r.PostFormValue("personalPassword")
|
personPass := r.PostFormValue("personalPassword")
|
||||||
|
|
||||||
// a) get room data
|
// a) get room data
|
||||||
room, _, err := roomsM.Get(roomName)
|
room, _, err := roomsM.Get(r.Context(), roomName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("/login/join error getting room %s", roomName)
|
log.Printf("/login/join error getting room %s", roomName)
|
||||||
w.WriteHeader(http.StatusBadRequest)
|
w.WriteHeader(http.StatusBadRequest)
|
||||||
|
|
|
@ -223,7 +223,7 @@ func roomPageRoute(
|
||||||
|
|
||||||
// check session,
|
// check session,
|
||||||
session, err := getRequestSession(r, sessionSM)
|
session, err := getRequestSession(r, sessionSM)
|
||||||
room, found, err := roomsM.Get(roomName)
|
room, found, err := roomsM.Get(r.Context(), roomName)
|
||||||
if err != nil || session.RoomId != roomName {
|
if err != nil || session.RoomId != roomName {
|
||||||
log.Printf("not authed with session %+v | error %s, but for wrong room, trying to access %s", session, err, roomName)
|
log.Printf("not authed with session %+v | error %s, but for wrong room, trying to access %s", session, err, roomName)
|
||||||
renderLoginPage(w, roomName, found)
|
renderLoginPage(w, roomName, found)
|
||||||
|
|
Loading…
Reference in New Issue