From 5a75e2875048714b322854154dbbeb9107960b0f Mon Sep 17 00:00:00 2001 From: ikura-hamu <104292023+ikura-hamu@users.noreply.github.com> Date: Sun, 27 Oct 2024 17:31:26 +0900 Subject: [PATCH] =?UTF-8?q?:sparkles:=20handler=E3=81=A7zip=E3=83=95?= =?UTF-8?q?=E3=82=A1=E3=82=A4=E3=83=AB=E9=96=A2=E4=BF=82=E3=81=AE=E3=82=A8?= =?UTF-8?q?=E3=83=A9=E3=83=BC=E3=83=8F=E3=83=B3=E3=83=89=E3=83=AA=E3=83=B3?= =?UTF-8?q?=E3=82=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/openapi/v2.yaml | 3 +- src/handler/v2/game_file.go | 8 +- src/handler/v2/game_file_test.go | 20 ++ src/handler/v2/openapi/openapi.gen.go | 353 +++++++++++++------------- 4 files changed, 206 insertions(+), 178 deletions(-) diff --git a/docs/openapi/v2.yaml b/docs/openapi/v2.yaml index 61843ba1..8d5e7076 100644 --- a/docs/openapi/v2.yaml +++ b/docs/openapi/v2.yaml @@ -6,7 +6,7 @@ servers: - url: /api/v2 #oapi-codegenでproxy後にもmatchできるようにするため必要 info: description: 'traP Collection v2' - version: '2.3.0' + version: '2.4.0' title: 'traP Collection v2' contact: name: traP @@ -857,6 +857,7 @@ paths: $ref: '#/components/schemas/Error' description: | リクエストが不正である場合に返されます。 + エントリーポイントが存在しない、zipファイルでないなどです。 "401": $ref: '#/components/responses/TraPUnauthorized' "404": diff --git a/src/handler/v2/game_file.go b/src/handler/v2/game_file.go index 63d60f20..3289bb46 100644 --- a/src/handler/v2/game_file.go +++ b/src/handler/v2/game_file.go @@ -105,7 +105,13 @@ func (gameFile GameFile) PostGameFile(c echo.Context, gameID openapi.GameIDInPat var err error savedFile, err = gameFile.gameFileService.SaveGameFile(c.Request().Context(), r, values.NewGameIDFromUUID(gameID), fileType, entryPoint) if errors.Is(err, service.ErrInvalidGameID) { - return echo.NewHTTPError(http.StatusNotFound, "invalid gameID") + return echo.NewHTTPError(http.StatusNotFound, "gameID not found") + } + if errors.Is(err, service.ErrNotZipFile) { + return echo.NewHTTPError(http.StatusBadRequest, "only zip file is allowed") + } + if errors.Is(err, service.ErrInvalidEntryPoint) { + return echo.NewHTTPError(http.StatusBadRequest, "invalid entry point") } if err != nil { log.Printf("error: failed to save game file: %v\n", err) diff --git a/src/handler/v2/game_file_test.go b/src/handler/v2/game_file_test.go index c5106ded..d5d86908 100644 --- a/src/handler/v2/game_file_test.go +++ b/src/handler/v2/game_file_test.go @@ -395,6 +395,26 @@ func TestPostGameFile(t *testing.T) { isErr: true, statusCode: http.StatusNotFound, }, + { + description: "SaveGameFileがErrNotZipFileなので404", + fileType: openapi.Jar, + gameID: uuid.UUID(values.NewGameID()), + reader: bytes.NewReader([]byte("test")), + executeSaveGameFile: true, + saveGameFileErr: service.ErrNotZipFile, + isErr: true, + statusCode: http.StatusBadRequest, + }, + { + description: "SaveGameFileがErrInvalidEntryPointなので404", + fileType: openapi.Jar, + gameID: uuid.UUID(values.NewGameID()), + reader: bytes.NewReader([]byte("test")), + executeSaveGameFile: true, + saveGameFileErr: service.ErrInvalidEntryPoint, + isErr: true, + statusCode: http.StatusBadRequest, + }, { description: "SaveGameFileがエラーなので500", fileType: openapi.Jar, diff --git a/src/handler/v2/openapi/openapi.gen.go b/src/handler/v2/openapi/openapi.gen.go index ed76331a..2db1da47 100644 --- a/src/handler/v2/openapi/openapi.gen.go +++ b/src/handler/v2/openapi/openapi.gen.go @@ -1,6 +1,6 @@ // Package openapi provides primitives to interact with the openapi HTTP API. // -// Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.4.0 DO NOT EDIT. +// Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.4.1 DO NOT EDIT. package openapi import ( @@ -2053,182 +2053,183 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", + "W18lyN1wHFDApk5M/f8AAAD//6fa8mj3WwEA", } // GetSwagger returns the content of the embedded swagger specification file