refactoring
This commit is contained in:
parent
9ff46c7e51
commit
8d06d702fd
@ -1,5 +1,4 @@
|
||||
{
|
||||
"id": "547933",
|
||||
"name": "Player #2",
|
||||
"role": "player",
|
||||
"game": "067fb1b8-8303-4faa-95d2-1832770a791c"
|
@ -1,5 +1,4 @@
|
||||
{
|
||||
"id": "646162",
|
||||
"name": "Settel",
|
||||
"role": "admin"
|
||||
}
|
@ -1,5 +1,4 @@
|
||||
{
|
||||
"id": "674542",
|
||||
"name": "Player #1",
|
||||
"role": "player",
|
||||
"game": "067fb1b8-8303-4faa-95d2-1832770a791c"
|
@ -2,21 +2,27 @@ package application
|
||||
|
||||
import (
|
||||
"sirlab.de/go/knyt/applicationConfig"
|
||||
"sirlab.de/go/knyt/users"
|
||||
"sirlab.de/go/knyt/game"
|
||||
"sirlab.de/go/knyt/user"
|
||||
)
|
||||
|
||||
type Application struct {
|
||||
config applicationConfig.ApplicationConfig
|
||||
users users.Users
|
||||
users map[string]*user.User
|
||||
games map[string]*game.Game
|
||||
}
|
||||
|
||||
func NewApplication(config applicationConfig.ApplicationConfig) (*Application, error) {
|
||||
app := Application{
|
||||
config: config,
|
||||
users: users.NewUsers(config),
|
||||
users: make(map[string]*user.User),
|
||||
games: make(map[string]*game.Game),
|
||||
}
|
||||
err := app.users.LoadUsers()
|
||||
if err != nil {
|
||||
|
||||
if err := app.loadUsers(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := app.loadGames(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@ -26,7 +32,3 @@ func NewApplication(config applicationConfig.ApplicationConfig) (*Application, e
|
||||
func (app *Application) GetConfig() applicationConfig.ApplicationConfig {
|
||||
return app.config
|
||||
}
|
||||
|
||||
func (app *Application) GetUsers() *users.Users {
|
||||
return &app.users
|
||||
}
|
||||
|
14
server/src/application/getUser.go
Normal file
14
server/src/application/getUser.go
Normal file
@ -0,0 +1,14 @@
|
||||
package application
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sirlab.de/go/knyt/user"
|
||||
)
|
||||
|
||||
func (app Application) GetUserById(id string) (*user.User, error) {
|
||||
usr := app.users[id]
|
||||
if usr == nil {
|
||||
return nil, fmt.Errorf("unknown id")
|
||||
}
|
||||
return usr, nil
|
||||
}
|
27
server/src/application/loadGames.go
Normal file
27
server/src/application/loadGames.go
Normal file
@ -0,0 +1,27 @@
|
||||
package application
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path"
|
||||
"sirlab.de/go/knyt/game"
|
||||
)
|
||||
|
||||
func (app Application) loadGames() error {
|
||||
dirName := path.Join(app.config.DataDir, "games")
|
||||
files, err := os.ReadDir(dirName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, file := range files {
|
||||
fileName := path.Join(dirName, file.Name(), "game.json")
|
||||
|
||||
if gm, err := game.NewGameFromFile(fileName); err != nil {
|
||||
return err
|
||||
} else {
|
||||
gm.Id = file.Name()
|
||||
app.games[gm.Id] = gm
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
27
server/src/application/loadUsers.go
Normal file
27
server/src/application/loadUsers.go
Normal file
@ -0,0 +1,27 @@
|
||||
package application
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path"
|
||||
"sirlab.de/go/knyt/user"
|
||||
)
|
||||
|
||||
func (app Application) loadUsers() error {
|
||||
dirName := path.Join(app.config.DataDir, "users")
|
||||
files, err := os.ReadDir(dirName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, file := range files {
|
||||
fileName := path.Join(dirName, file.Name())
|
||||
|
||||
if usr, err := user.NewUserFromFile(fileName); err != nil {
|
||||
return err
|
||||
} else {
|
||||
usr.Id = file.Name()[0:6]
|
||||
app.users[usr.Id] = usr
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
21
server/src/game/game.go
Normal file
21
server/src/game/game.go
Normal file
@ -0,0 +1,21 @@
|
||||
package game
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"os"
|
||||
)
|
||||
|
||||
func NewGameFromFile(fileName string) (*Game, error) {
|
||||
jsonBytes, err := os.ReadFile(fileName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var gm Game
|
||||
if err := json.Unmarshal(jsonBytes, &gm); err != nil {
|
||||
return nil, fmt.Errorf("%s: %v\n", fileName, err)
|
||||
} else {
|
||||
return &gm, nil
|
||||
}
|
||||
}
|
6
server/src/game/struct.go
Normal file
6
server/src/game/struct.go
Normal file
@ -0,0 +1,6 @@
|
||||
package game
|
||||
|
||||
type Game struct {
|
||||
Id string `json:"id"`
|
||||
Players []string `json:"players"`
|
||||
}
|
@ -47,7 +47,7 @@ func (authMux *AuthMux) checkCode(r *http.Request) (*user.User, error) {
|
||||
return nil, fmt.Errorf("invalid code")
|
||||
}
|
||||
|
||||
usr, err := authMux.app.GetUsers().GetUserById(code)
|
||||
usr, err := authMux.app.GetUserById(code)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("invalid code")
|
||||
}
|
||||
|
@ -44,7 +44,7 @@ func (authMux *AuthMux) getUserFromSession(r *http.Request) (*user.User, error)
|
||||
return nil, fmt.Errorf("invalid cookie")
|
||||
}
|
||||
|
||||
usr, usrErr := authMux.app.GetUsers().GetUserById(authCookie.Value)
|
||||
usr, usrErr := authMux.app.GetUserById(authCookie.Value)
|
||||
if usrErr != nil {
|
||||
return nil, fmt.Errorf("invalid cookie")
|
||||
}
|
||||
|
@ -1,52 +0,0 @@
|
||||
package users
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path"
|
||||
"sirlab.de/go/knyt/applicationConfig"
|
||||
"sirlab.de/go/knyt/user"
|
||||
)
|
||||
|
||||
type Users struct {
|
||||
appConfig applicationConfig.ApplicationConfig
|
||||
users map[string]*user.User
|
||||
}
|
||||
|
||||
func NewUsers(appConfig applicationConfig.ApplicationConfig) Users {
|
||||
return Users{
|
||||
users: make(map[string]*user.User),
|
||||
appConfig: appConfig,
|
||||
}
|
||||
}
|
||||
|
||||
func (users Users) LoadUsers() error {
|
||||
dirName := path.Join(users.appConfig.DataDir, "users")
|
||||
files, err := os.ReadDir(dirName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, file := range files {
|
||||
fileName := path.Join(dirName, file.Name())
|
||||
|
||||
if usr, err := user.NewUserFromFile(fileName); err != nil {
|
||||
return err
|
||||
} else {
|
||||
users.AddUser(usr)
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (users Users) AddUser(usr *user.User) {
|
||||
users.users[usr.Id] = usr
|
||||
}
|
||||
|
||||
func (users Users) GetUserById(id string) (*user.User, error) {
|
||||
usr := users.users[id]
|
||||
if usr == nil {
|
||||
return nil, fmt.Errorf("unknown id")
|
||||
}
|
||||
return usr, nil
|
||||
}
|
Loading…
Reference in New Issue
Block a user