diff options
| -rw-r--r-- | backend/.golangci.yml | 1 | ||||
| -rw-r--r-- | backend/admin/handler.go (renamed from backend/admin/handlers.go) | 29 | ||||
| -rw-r--r-- | backend/admin/renderer.go | 2 | ||||
| -rw-r--r-- | backend/api/handler.go (renamed from backend/api/handlers.go) | 13 | ||||
| -rw-r--r-- | backend/api/handler_wrapper.go | 4 | ||||
| -rw-r--r-- | backend/auth/jwt.go | 2 | ||||
| -rw-r--r-- | backend/game/http.go | 12 | ||||
| -rw-r--r-- | backend/game/hub.go | 24 | ||||
| -rw-r--r-- | backend/game/ws.go | 1 | ||||
| -rw-r--r-- | backend/gen/api/handler_wrapper_gen.go | 14 | ||||
| -rw-r--r-- | backend/main.go | 2 | ||||
| -rw-r--r-- | worker/exec.go | 6 |
12 files changed, 53 insertions, 57 deletions
diff --git a/backend/.golangci.yml b/backend/.golangci.yml index a6494c0..d203223 100644 --- a/backend/.golangci.yml +++ b/backend/.golangci.yml @@ -2,4 +2,5 @@ linters: enable: - gofmt - goimports + - revive - stylecheck diff --git a/backend/admin/handlers.go b/backend/admin/handler.go index 2a678d3..111476b 100644 --- a/backend/admin/handlers.go +++ b/backend/admin/handler.go @@ -16,7 +16,7 @@ import ( var jst = time.FixedZone("Asia/Tokyo", 9*60*60) -type AdminHandler struct { +type Handler struct { q *db.Queries hubs GameHubsInterface } @@ -25,8 +25,8 @@ type GameHubsInterface interface { StartGame(gameID int) error } -func NewAdminHandler(q *db.Queries, hubs GameHubsInterface) *AdminHandler { - return &AdminHandler{ +func NewHandler(q *db.Queries, hubs GameHubsInterface) *Handler { + return &Handler{ q: q, hubs: hubs, } @@ -51,7 +51,7 @@ func newAdminMiddleware() echo.MiddlewareFunc { } } -func (h *AdminHandler) RegisterHandlers(g *echo.Group) { +func (h *Handler) RegisterHandlers(g *echo.Group) { g.Use(newAssetsMiddleware()) g.Use(newAdminMiddleware()) @@ -63,13 +63,13 @@ func (h *AdminHandler) RegisterHandlers(g *echo.Group) { g.POST("/games/:gameID", h.postGameEdit) } -func (h *AdminHandler) getDashboard(c echo.Context) error { +func (h *Handler) getDashboard(c echo.Context) error { return c.Render(http.StatusOK, "dashboard", echo.Map{ "Title": "Dashboard", }) } -func (h *AdminHandler) getUsers(c echo.Context) error { +func (h *Handler) getUsers(c echo.Context) error { rows, err := h.q.ListUsers(c.Request().Context()) if err != nil { return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) @@ -91,7 +91,7 @@ func (h *AdminHandler) getUsers(c echo.Context) error { }) } -func (h *AdminHandler) getUserEdit(c echo.Context) error { +func (h *Handler) getUserEdit(c echo.Context) error { userID, err := strconv.Atoi(c.Param("userID")) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, "Invalid user id") @@ -100,9 +100,8 @@ func (h *AdminHandler) getUserEdit(c echo.Context) error { if err != nil { if errors.Is(err, pgx.ErrNoRows) { return echo.NewHTTPError(http.StatusNotFound) - } else { - return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) } + return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) } return c.Render(http.StatusOK, "user_edit", echo.Map{ @@ -117,7 +116,7 @@ func (h *AdminHandler) getUserEdit(c echo.Context) error { }) } -func (h *AdminHandler) getGames(c echo.Context) error { +func (h *Handler) getGames(c echo.Context) error { rows, err := h.q.ListGames(c.Request().Context()) if err != nil { return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) @@ -145,7 +144,7 @@ func (h *AdminHandler) getGames(c echo.Context) error { }) } -func (h *AdminHandler) getGameEdit(c echo.Context) error { +func (h *Handler) getGameEdit(c echo.Context) error { gameID, err := strconv.Atoi(c.Param("gameID")) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, "Invalid game id") @@ -154,9 +153,8 @@ func (h *AdminHandler) getGameEdit(c echo.Context) error { if err != nil { if errors.Is(err, pgx.ErrNoRows) { return echo.NewHTTPError(http.StatusNotFound) - } else { - return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) } + return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) } var startedAt string @@ -178,7 +176,7 @@ func (h *AdminHandler) getGameEdit(c echo.Context) error { }) } -func (h *AdminHandler) postGameEdit(c echo.Context) error { +func (h *Handler) postGameEdit(c echo.Context) error { gameID, err := strconv.Atoi(c.Param("gameID")) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, "Invalid game id") @@ -187,9 +185,8 @@ func (h *AdminHandler) postGameEdit(c echo.Context) error { if err != nil { if errors.Is(err, pgx.ErrNoRows) { return echo.NewHTTPError(http.StatusNotFound) - } else { - return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) } + return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) } gameType := c.FormValue("game_type") diff --git a/backend/admin/renderer.go b/backend/admin/renderer.go index 468677f..d38c701 100644 --- a/backend/admin/renderer.go +++ b/backend/admin/renderer.go @@ -27,7 +27,7 @@ func NewRenderer() *Renderer { } } -func (r *Renderer) Render(w io.Writer, name string, data interface{}, c echo.Context) error { +func (r *Renderer) Render(w io.Writer, name string, data interface{}, _ echo.Context) error { tmpl, ok := r.templates[name] if !ok { t, err := template.ParseFS(templatesFS, "templates/base.html", "templates/"+name+".html") diff --git a/backend/api/handlers.go b/backend/api/handler.go index 229246f..57d7464 100644 --- a/backend/api/handlers.go +++ b/backend/api/handler.go @@ -12,7 +12,7 @@ import ( "github.com/nsfisis/iosdc-japan-2024-albatross/backend/db" ) -type APIHandler struct { +type Handler struct { q *db.Queries hubs GameHubsInterface } @@ -21,7 +21,7 @@ type GameHubsInterface interface { StartGame(gameID int) error } -func (h *APIHandler) PostLogin(ctx context.Context, request PostLoginRequestObject) (PostLoginResponseObject, error) { +func (h *Handler) PostLogin(ctx context.Context, request PostLoginRequestObject) (PostLoginResponseObject, error) { username := request.Body.Username password := request.Body.Password userID, err := auth.Login(ctx, h.q, username, password) @@ -52,7 +52,7 @@ func (h *APIHandler) PostLogin(ctx context.Context, request PostLoginRequestObje }, nil } -func (h *APIHandler) GetToken(ctx context.Context, request GetTokenRequestObject, user *auth.JWTClaims) (GetTokenResponseObject, error) { +func (h *Handler) GetToken(_ context.Context, _ GetTokenRequestObject, user *auth.JWTClaims) (GetTokenResponseObject, error) { newToken, err := auth.NewShortLivedJWT(user) if err != nil { return nil, echo.NewHTTPError(http.StatusInternalServerError, err.Error()) @@ -62,7 +62,7 @@ func (h *APIHandler) GetToken(ctx context.Context, request GetTokenRequestObject }, nil } -func (h *APIHandler) GetGames(ctx context.Context, request GetGamesRequestObject, user *auth.JWTClaims) (GetGamesResponseObject, error) { +func (h *Handler) GetGames(ctx context.Context, _ GetGamesRequestObject, user *auth.JWTClaims) (GetGamesResponseObject, error) { gameRows, err := h.q.ListGamesForPlayer(ctx, int32(user.UserID)) if err != nil { return nil, echo.NewHTTPError(http.StatusInternalServerError, err.Error()) @@ -100,7 +100,7 @@ func (h *APIHandler) GetGames(ctx context.Context, request GetGamesRequestObject }, nil } -func (h *APIHandler) GetGame(ctx context.Context, request GetGameRequestObject, user *auth.JWTClaims) (GetGameResponseObject, error) { +func (h *Handler) GetGame(ctx context.Context, request GetGameRequestObject, user *auth.JWTClaims) (GetGameResponseObject, error) { // TODO: check user permission gameID := request.GameID row, err := h.q.GetGameByID(ctx, int32(gameID)) @@ -111,9 +111,8 @@ func (h *APIHandler) GetGame(ctx context.Context, request GetGameRequestObject, Message: "Game not found", }, }, nil - } else { - return nil, echo.NewHTTPError(http.StatusInternalServerError, err.Error()) } + return nil, echo.NewHTTPError(http.StatusInternalServerError, err.Error()) } var startedAt *int if row.StartedAt.Valid { diff --git a/backend/api/handler_wrapper.go b/backend/api/handler_wrapper.go index 748af66..69b9baa 100644 --- a/backend/api/handler_wrapper.go +++ b/backend/api/handler_wrapper.go @@ -14,12 +14,12 @@ import ( var _ StrictServerInterface = (*ApiHandlerWrapper)(nil) type ApiHandlerWrapper struct { - innerHandler APIHandler + innerHandler Handler } func NewHandler(queries *db.Queries, hubs GameHubsInterface) *ApiHandlerWrapper { return &ApiHandlerWrapper{ - innerHandler: APIHandler{ + innerHandler: Handler{ q: queries, hubs: hubs, }, diff --git a/backend/auth/jwt.go b/backend/auth/jwt.go index 966cc5f..e1852da 100644 --- a/backend/auth/jwt.go +++ b/backend/auth/jwt.go @@ -50,7 +50,7 @@ func NewShortLivedJWT(claims *JWTClaims) (string, error) { func ParseJWT(token string) (*JWTClaims, error) { claims := new(JWTClaims) - t, err := jwt.ParseWithClaims(token, claims, func(t *jwt.Token) (interface{}, error) { + t, err := jwt.ParseWithClaims(token, claims, func(*jwt.Token) (interface{}, error) { return []byte("TODO"), nil }) if err != nil { diff --git a/backend/game/http.go b/backend/game/http.go index 865c724..d513593 100644 --- a/backend/game/http.go +++ b/backend/game/http.go @@ -9,17 +9,17 @@ import ( "github.com/nsfisis/iosdc-japan-2024-albatross/backend/auth" ) -type sockHandler struct { - hubs *GameHubs +type SockHandler struct { + hubs *Hubs } -func newSockHandler(hubs *GameHubs) *sockHandler { - return &sockHandler{ +func newSockHandler(hubs *Hubs) *SockHandler { + return &SockHandler{ hubs: hubs, } } -func (h *sockHandler) HandleSockGolfPlay(c echo.Context) error { +func (h *SockHandler) HandleSockGolfPlay(c echo.Context) error { jwt := c.QueryParam("token") claims, err := auth.ParseJWT(jwt) if err != nil { @@ -38,7 +38,7 @@ func (h *sockHandler) HandleSockGolfPlay(c echo.Context) error { return servePlayerWs(hub, c.Response(), c.Request(), claims.UserID) } -func (h *sockHandler) HandleSockGolfWatch(c echo.Context) error { +func (h *SockHandler) HandleSockGolfWatch(c echo.Context) error { jwt := c.QueryParam("token") claims, err := auth.ParseJWT(jwt) if err != nil { diff --git a/backend/game/hub.go b/backend/game/hub.go index 11a466b..dc56f03 100644 --- a/backend/game/hub.go +++ b/backend/game/hub.go @@ -544,15 +544,15 @@ func (hub *gameHub) closeWatcherClient(watcher *watcherClient) { close(watcher.s2cMessages) } -type GameHubs struct { +type Hubs struct { hubs map[int]*gameHub q *db.Queries taskQueue *taskqueue.Queue taskResults chan taskqueue.TaskResult } -func NewGameHubs(q *db.Queries, taskQueue *taskqueue.Queue, taskResults chan taskqueue.TaskResult) *GameHubs { - return &GameHubs{ +func NewGameHubs(q *db.Queries, taskQueue *taskqueue.Queue, taskResults chan taskqueue.TaskResult) *Hubs { + return &Hubs{ hubs: make(map[int]*gameHub), q: q, taskQueue: taskQueue, @@ -560,18 +560,18 @@ func NewGameHubs(q *db.Queries, taskQueue *taskqueue.Queue, taskResults chan tas } } -func (hubs *GameHubs) Close() { +func (hubs *Hubs) Close() { log.Println("closing all game hubs") for _, hub := range hubs.hubs { hub.close() } } -func (hubs *GameHubs) getHub(gameID int) *gameHub { +func (hubs *Hubs) getHub(gameID int) *gameHub { return hubs.hubs[gameID] } -func (hubs *GameHubs) RestoreFromDB(ctx context.Context) error { +func (hubs *Hubs) RestoreFromDB(ctx context.Context) error { games, err := hubs.q.ListGames(ctx) if err != nil { return err @@ -581,12 +581,12 @@ func (hubs *GameHubs) RestoreFromDB(ctx context.Context) error { if row.StartedAt.Valid { startedAt = &row.StartedAt.Time } - var problem_ *problem + var pr *problem if row.ProblemID != nil { if row.Title == nil || row.Description == nil { panic("inconsistent data") } - problem_ = &problem{ + pr = &problem{ problemID: int(*row.ProblemID), title: *row.Title, description: *row.Description, @@ -603,14 +603,14 @@ func (hubs *GameHubs) RestoreFromDB(ctx context.Context) error { state: gameState(row.State), displayName: row.DisplayName, startedAt: startedAt, - problem: problem_, + problem: pr, playerCount: len(playerRows), }, hubs.q, hubs.taskQueue) } return nil } -func (hubs *GameHubs) Run() { +func (hubs *Hubs) Run() { for _, hub := range hubs.hubs { go hub.run() go hub.processTaskResults() @@ -626,11 +626,11 @@ func (hubs *GameHubs) Run() { } } -func (hubs *GameHubs) SockHandler() *sockHandler { +func (hubs *Hubs) SockHandler() *SockHandler { return newSockHandler(hubs) } -func (hubs *GameHubs) StartGame(gameID int) error { +func (hubs *Hubs) StartGame(gameID int) error { hub := hubs.getHub(gameID) if hub == nil { return errors.New("no such game") diff --git a/backend/game/ws.go b/backend/game/ws.go index 8e219d6..0dbd0ab 100644 --- a/backend/game/ws.go +++ b/backend/game/ws.go @@ -20,6 +20,7 @@ var upgrader = websocket.Upgrader{ WriteBufferSize: 1024, CheckOrigin: func(r *http.Request) bool { // TODO: insecure! + _ = r return true }, } diff --git a/backend/gen/api/handler_wrapper_gen.go b/backend/gen/api/handler_wrapper_gen.go index 42fc5e8..1cd9770 100644 --- a/backend/gen/api/handler_wrapper_gen.go +++ b/backend/gen/api/handler_wrapper_gen.go @@ -111,15 +111,15 @@ import ( "github.com/nsfisis/iosdc-japan-2024-albatross/backend/db" ) -var _ StrictServerInterface = (*APIHandlerWrapper)(nil) +var _ StrictServerInterface = (*HandlerWrapper)(nil) -type APIHandlerWrapper struct { - impl APIHandler +type HandlerWrapper struct { + impl Handler } -func NewHandler(queries *db.Queries, hubs GameHubsInterface) *APIHandlerWrapper { - return &APIHandlerWrapper{ - impl: APIHandler{ +func NewHandler(queries *db.Queries, hubs GameHubsInterface) *HandlerWrapper { + return &HandlerWrapper{ + impl: Handler{ q: queries, hubs: hubs, }, @@ -140,7 +140,7 @@ func parseJWTClaimsFromAuthorizationHeader(authorization string) (*auth.JWTClaim } {{ range . }} - func (h *APIHandlerWrapper) {{ .Name }}(ctx context.Context, request {{ .Name }}RequestObject) ({{ .Name }}ResponseObject, error) { + func (h *HandlerWrapper) {{ .Name }}(ctx context.Context, request {{ .Name }}RequestObject) ({{ .Name }}ResponseObject, error) { {{ if .RequiresLogin -}} user, err := parseJWTClaimsFromAuthorizationHeader(request.Params.Authorization) if err != nil { diff --git a/backend/main.go b/backend/main.go index c8a5832..575c3f8 100644 --- a/backend/main.go +++ b/backend/main.go @@ -83,7 +83,7 @@ func main() { apiHandler := api.NewHandler(queries, gameHubs) api.RegisterHandlers(apiGroup, api.NewStrictHandler(apiHandler, nil)) - adminHandler := admin.NewAdminHandler(queries, gameHubs) + adminHandler := admin.NewHandler(queries, gameHubs) adminGroup := e.Group("/admin") adminHandler.RegisterHandlers(adminGroup) diff --git a/worker/exec.go b/worker/exec.go index fb238c3..bd49162 100644 --- a/worker/exec.go +++ b/worker/exec.go @@ -76,12 +76,10 @@ func convertCommandErrorToResultType(err error) string { if err != nil { if err == context.DeadlineExceeded { return resultTimeout - } else { - return resultRuntimeError } - } else { - return resultSuccess + return resultRuntimeError } + return resultSuccess } func execSwiftCompile( |
