From fc2f2c7602c0bea8de76172f6d3303eab374a01e Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Mon, 22 Jun 2020 20:21:31 +0200 Subject: [PATCH] API: Move AllowedReactions endpoint into GetGenneralUI endpoint + creat new swagger section settings (#11854) * move Setting function into its own package * swagger add&use new section "settings" * move api AllowedReactions into general UI-Settings endpoint * prepare TEST * lint --- integrations/api_issue_reaction_test.go | 10 ++-- modules/structs/settings.go | 5 ++ routers/api/v1/api.go | 5 +- routers/api/v1/{misc => settings}/settings.go | 18 +++--- routers/api/v1/swagger/misc.go | 7 --- routers/api/v1/swagger/settings.go | 21 +++++++ templates/swagger/v1_json.tmpl | 56 +++++++++++++------ 7 files changed, 81 insertions(+), 41 deletions(-) rename routers/api/v1/{misc => settings}/settings.go (64%) create mode 100644 routers/api/v1/swagger/settings.go diff --git a/integrations/api_issue_reaction_test.go b/integrations/api_issue_reaction_test.go index ab3de7c11..abbc6429f 100644 --- a/integrations/api_issue_reaction_test.go +++ b/integrations/api_issue_reaction_test.go @@ -20,16 +20,14 @@ import ( func TestAPIAllowedReactions(t *testing.T) { defer prepareTestEnv(t)() - type allowed []string + a := new(api.GeneralUISettings) - a := new(allowed) - - req := NewRequest(t, "GET", "/api/v1/settings/allowed_reactions") + req := NewRequest(t, "GET", "/api/v1/settings/ui") resp := MakeRequest(t, req, http.StatusOK) DecodeJSON(t, resp, &a) - assert.Len(t, *a, len(setting.UI.Reactions)) - assert.ElementsMatch(t, setting.UI.Reactions, *a) + assert.Len(t, a.AllowedReactions, len(setting.UI.Reactions)) + assert.ElementsMatch(t, setting.UI.Reactions, a.AllowedReactions) } func TestAPIIssuesReactions(t *testing.T) { diff --git a/modules/structs/settings.go b/modules/structs/settings.go index dcd1b5cab..4a6e0ce5a 100644 --- a/modules/structs/settings.go +++ b/modules/structs/settings.go @@ -9,3 +9,8 @@ type GeneralRepoSettings struct { MirrorsDisabled bool `json:"mirrors_disabled"` HTTPGitDisabled bool `json:"http_git_disabled"` } + +// GeneralUISettings contains global ui settings exposed by API +type GeneralUISettings struct { + AllowedReactions []string `json:"allowed_reactions"` +} diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index f356d7a2b..b03f547a6 100644 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -73,6 +73,7 @@ import ( "code.gitea.io/gitea/routers/api/v1/notify" "code.gitea.io/gitea/routers/api/v1/org" "code.gitea.io/gitea/routers/api/v1/repo" + "code.gitea.io/gitea/routers/api/v1/settings" _ "code.gitea.io/gitea/routers/api/v1/swagger" // for swagger generation "code.gitea.io/gitea/routers/api/v1/user" @@ -513,8 +514,8 @@ func RegisterRoutes(m *macaron.Macaron) { m.Post("/markdown", bind(api.MarkdownOption{}), misc.Markdown) m.Post("/markdown/raw", misc.MarkdownRaw) m.Group("/settings", func() { - m.Get("/allowed_reactions", misc.SettingGetsAllowedReactions) - m.Get("/repository", misc.GetGeneralRepoSettings) + m.Get("/ui", settings.GetGeneralUISettings) + m.Get("/repository", settings.GetGeneralRepoSettings) }) // Notifications diff --git a/routers/api/v1/misc/settings.go b/routers/api/v1/settings/settings.go similarity index 64% rename from routers/api/v1/misc/settings.go rename to routers/api/v1/settings/settings.go index 925cde835..8403a51d3 100644 --- a/routers/api/v1/misc/settings.go +++ b/routers/api/v1/settings/settings.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a MIT-style // license that can be found in the LICENSE file. -package misc +package settings import ( "net/http" @@ -12,22 +12,24 @@ import ( api "code.gitea.io/gitea/modules/structs" ) -// SettingGetsAllowedReactions return allowed reactions -func SettingGetsAllowedReactions(ctx *context.APIContext) { - // swagger:operation GET /settings/allowed_reactions miscellaneous getAllowedReactions +// GetGeneralUISettings returns instance's global settings for ui +func GetGeneralUISettings(ctx *context.APIContext) { + // swagger:operation GET /settings/ui settings getGeneralUISettings // --- - // summary: Returns string array of allowed reactions + // summary: Get instance's global settings for ui // produces: // - application/json // responses: // "200": - // "$ref": "#/responses/StringSlice" - ctx.JSON(http.StatusOK, setting.UI.Reactions) + // "$ref": "#/responses/GeneralUISettings" + ctx.JSON(http.StatusOK, api.GeneralUISettings{ + AllowedReactions: setting.UI.Reactions, + }) } // GetGeneralRepoSettings returns instance's global settings for repositories func GetGeneralRepoSettings(ctx *context.APIContext) { - // swagger:operation GET /settings/repository miscellaneous getGeneralRepositorySettings + // swagger:operation GET /settings/repository settings getGeneralRepositorySettings // --- // summary: Get instance's global settings for repositories // produces: diff --git a/routers/api/v1/swagger/misc.go b/routers/api/v1/swagger/misc.go index 50f5cbdbf..1d3c257ef 100644 --- a/routers/api/v1/swagger/misc.go +++ b/routers/api/v1/swagger/misc.go @@ -21,10 +21,3 @@ type swaggerResponseStringSlice struct { // in:body Body []string `json:"body"` } - -// GeneralRepoSettings -// swagger:response GeneralRepoSettings -type swaggerResponseGeneralRepoSettings struct { - // in:body - Body api.GeneralRepoSettings `json:"body"` -} diff --git a/routers/api/v1/swagger/settings.go b/routers/api/v1/swagger/settings.go new file mode 100644 index 000000000..45266e51d --- /dev/null +++ b/routers/api/v1/swagger/settings.go @@ -0,0 +1,21 @@ +// Copyright 2020 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package swagger + +import api "code.gitea.io/gitea/modules/structs" + +// GeneralRepoSettings +// swagger:response GeneralRepoSettings +type swaggerResponseGeneralRepoSettings struct { + // in:body + Body api.GeneralRepoSettings `json:"body"` +} + +// GeneralUISettings +// swagger:response GeneralUISettings +type swaggerResponseGeneralUISettings struct { + // in:body + Body api.GeneralUISettings `json:"body"` +} diff --git a/templates/swagger/v1_json.tmpl b/templates/swagger/v1_json.tmpl index 34a4b42f2..1226822cc 100644 --- a/templates/swagger/v1_json.tmpl +++ b/templates/swagger/v1_json.tmpl @@ -8470,30 +8470,13 @@ } } }, - "/settings/allowed_reactions": { - "get": { - "produces": [ - "application/json" - ], - "tags": [ - "miscellaneous" - ], - "summary": "Returns string array of allowed reactions", - "operationId": "getAllowedReactions", - "responses": { - "200": { - "$ref": "#/responses/StringSlice" - } - } - } - }, "/settings/repository": { "get": { "produces": [ "application/json" ], "tags": [ - "miscellaneous" + "settings" ], "summary": "Get instance's global settings for repositories", "operationId": "getGeneralRepositorySettings", @@ -8504,6 +8487,23 @@ } } }, + "/settings/ui": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "settings" + ], + "summary": "Get instance's global settings for ui", + "operationId": "getGeneralUISettings", + "responses": { + "200": { + "$ref": "#/responses/GeneralUISettings" + } + } + } + }, "/signing-key.gpg": { "get": { "produces": [ @@ -12753,6 +12753,20 @@ }, "x-go-package": "code.gitea.io/gitea/modules/structs" }, + "GeneralUISettings": { + "description": "GeneralUISettings contains global ui settings exposed by API", + "type": "object", + "properties": { + "allowed_reactions": { + "type": "array", + "items": { + "type": "string" + }, + "x-go-name": "AllowedReactions" + } + }, + "x-go-package": "code.gitea.io/gitea/modules/structs" + }, "GitBlobResponse": { "description": "GitBlobResponse represents a git blob", "type": "object", @@ -14928,6 +14942,12 @@ "$ref": "#/definitions/GeneralRepoSettings" } }, + "GeneralUISettings": { + "description": "GeneralUISettings", + "schema": { + "$ref": "#/definitions/GeneralUISettings" + } + }, "GitBlobResponse": { "description": "GitBlobResponse", "schema": {