aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--integrations/api_issue_reaction_test.go14
-rw-r--r--integrations/api_settings_test.go49
-rw-r--r--modules/structs/settings.go8
-rw-r--r--routers/api/v1/api.go1
-rw-r--r--routers/api/v1/settings/settings.go18
-rw-r--r--routers/api/v1/swagger/settings.go7
-rw-r--r--templates/swagger/v1_json.tmpl50
7 files changed, 133 insertions, 14 deletions
diff --git a/integrations/api_issue_reaction_test.go b/integrations/api_issue_reaction_test.go
index abbc6429fb..1906b8d090 100644
--- a/integrations/api_issue_reaction_test.go
+++ b/integrations/api_issue_reaction_test.go
@@ -11,25 +11,11 @@ import (
"time"
"code.gitea.io/gitea/models"
- "code.gitea.io/gitea/modules/setting"
api "code.gitea.io/gitea/modules/structs"
"github.com/stretchr/testify/assert"
)
-func TestAPIAllowedReactions(t *testing.T) {
- defer prepareTestEnv(t)()
-
- a := new(api.GeneralUISettings)
-
- req := NewRequest(t, "GET", "/api/v1/settings/ui")
- resp := MakeRequest(t, req, http.StatusOK)
-
- DecodeJSON(t, resp, &a)
- assert.Len(t, a.AllowedReactions, len(setting.UI.Reactions))
- assert.ElementsMatch(t, setting.UI.Reactions, a.AllowedReactions)
-}
-
func TestAPIIssuesReactions(t *testing.T) {
defer prepareTestEnv(t)()
diff --git a/integrations/api_settings_test.go b/integrations/api_settings_test.go
new file mode 100644
index 0000000000..3eb8e93044
--- /dev/null
+++ b/integrations/api_settings_test.go
@@ -0,0 +1,49 @@
+// 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 integrations
+
+import (
+ "net/http"
+ "testing"
+
+ "code.gitea.io/gitea/modules/setting"
+ api "code.gitea.io/gitea/modules/structs"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestAPIExposedSettings(t *testing.T) {
+ defer prepareTestEnv(t)()
+
+ ui := new(api.GeneralUISettings)
+ req := NewRequest(t, "GET", "/api/v1/settings/ui")
+ resp := MakeRequest(t, req, http.StatusOK)
+
+ DecodeJSON(t, resp, &ui)
+ assert.Len(t, ui.AllowedReactions, len(setting.UI.Reactions))
+ assert.ElementsMatch(t, setting.UI.Reactions, ui.AllowedReactions)
+
+ apiSettings := new(api.GeneralAPISettings)
+ req = NewRequest(t, "GET", "/api/v1/settings/api")
+ resp = MakeRequest(t, req, http.StatusOK)
+
+ DecodeJSON(t, resp, &apiSettings)
+ assert.EqualValues(t, &api.GeneralAPISettings{
+ MaxResponseItems: setting.API.MaxResponseItems,
+ DefaultPagingNum: setting.API.DefaultPagingNum,
+ DefaultGitTreesPerPage: setting.API.DefaultGitTreesPerPage,
+ DefaultMaxBlobSize: setting.API.DefaultMaxBlobSize,
+ }, apiSettings)
+
+ repo := new(api.GeneralRepoSettings)
+ req = NewRequest(t, "GET", "/api/v1/settings/repository")
+ resp = MakeRequest(t, req, http.StatusOK)
+
+ DecodeJSON(t, resp, &repo)
+ assert.EqualValues(t, &api.GeneralRepoSettings{
+ MirrorsDisabled: setting.Repository.DisableMirrors,
+ HTTPGitDisabled: setting.Repository.DisableHTTPGit,
+ }, repo)
+}
diff --git a/modules/structs/settings.go b/modules/structs/settings.go
index 4a6e0ce5a8..f1ff1344ea 100644
--- a/modules/structs/settings.go
+++ b/modules/structs/settings.go
@@ -14,3 +14,11 @@ type GeneralRepoSettings struct {
type GeneralUISettings struct {
AllowedReactions []string `json:"allowed_reactions"`
}
+
+// GeneralAPISettings contains global api settings exposed by it
+type GeneralAPISettings struct {
+ MaxResponseItems int `json:"max_response_items"`
+ DefaultPagingNum int `json:"default_paging_num"`
+ DefaultGitTreesPerPage int `json:"default_git_trees_per_page"`
+ DefaultMaxBlobSize int64 `json:"default_max_blob_size"`
+}
diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go
index ab7ef6d6f7..027c6abc97 100644
--- a/routers/api/v1/api.go
+++ b/routers/api/v1/api.go
@@ -521,6 +521,7 @@ func RegisterRoutes(m *macaron.Macaron) {
m.Post("/markdown/raw", misc.MarkdownRaw)
m.Group("/settings", func() {
m.Get("/ui", settings.GetGeneralUISettings)
+ m.Get("/api", settings.GetGeneralAPISettings)
m.Get("/repository", settings.GetGeneralRepoSettings)
})
diff --git a/routers/api/v1/settings/settings.go b/routers/api/v1/settings/settings.go
index 8403a51d3e..7ec0d74c83 100644
--- a/routers/api/v1/settings/settings.go
+++ b/routers/api/v1/settings/settings.go
@@ -27,6 +27,24 @@ func GetGeneralUISettings(ctx *context.APIContext) {
})
}
+// GetGeneralAPISettings returns instance's global settings for api
+func GetGeneralAPISettings(ctx *context.APIContext) {
+ // swagger:operation GET /settings/api settings getGeneralAPISettings
+ // ---
+ // summary: Get instance's global settings for api
+ // produces:
+ // - application/json
+ // responses:
+ // "200":
+ // "$ref": "#/responses/GeneralAPISettings"
+ ctx.JSON(http.StatusOK, api.GeneralAPISettings{
+ MaxResponseItems: setting.API.MaxResponseItems,
+ DefaultPagingNum: setting.API.DefaultPagingNum,
+ DefaultGitTreesPerPage: setting.API.DefaultGitTreesPerPage,
+ DefaultMaxBlobSize: setting.API.DefaultMaxBlobSize,
+ })
+}
+
// GetGeneralRepoSettings returns instance's global settings for repositories
func GetGeneralRepoSettings(ctx *context.APIContext) {
// swagger:operation GET /settings/repository settings getGeneralRepositorySettings
diff --git a/routers/api/v1/swagger/settings.go b/routers/api/v1/swagger/settings.go
index 45266e51df..ad0d891dde 100644
--- a/routers/api/v1/swagger/settings.go
+++ b/routers/api/v1/swagger/settings.go
@@ -19,3 +19,10 @@ type swaggerResponseGeneralUISettings struct {
// in:body
Body api.GeneralUISettings `json:"body"`
}
+
+// GeneralAPISettings
+// swagger:response GeneralAPISettings
+type swaggerResponseGeneralAPISettings struct {
+ // in:body
+ Body api.GeneralAPISettings `json:"body"`
+}
diff --git a/templates/swagger/v1_json.tmpl b/templates/swagger/v1_json.tmpl
index 4d6333ac4e..86dd817ede 100644
--- a/templates/swagger/v1_json.tmpl
+++ b/templates/swagger/v1_json.tmpl
@@ -8672,6 +8672,23 @@
}
}
},
+ "/settings/api": {
+ "get": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "settings"
+ ],
+ "summary": "Get instance's global settings for api",
+ "operationId": "getGeneralAPISettings",
+ "responses": {
+ "200": {
+ "$ref": "#/responses/GeneralAPISettings"
+ }
+ }
+ }
+ },
"/settings/repository": {
"get": {
"produces": [
@@ -12977,6 +12994,33 @@
},
"x-go-package": "code.gitea.io/gitea/modules/structs"
},
+ "GeneralAPISettings": {
+ "description": "GeneralAPISettings contains global api settings exposed by it",
+ "type": "object",
+ "properties": {
+ "default_git_trees_per_page": {
+ "type": "integer",
+ "format": "int64",
+ "x-go-name": "DefaultGitTreesPerPage"
+ },
+ "default_max_blob_size": {
+ "type": "integer",
+ "format": "int64",
+ "x-go-name": "DefaultMaxBlobSize"
+ },
+ "default_paging_num": {
+ "type": "integer",
+ "format": "int64",
+ "x-go-name": "DefaultPagingNum"
+ },
+ "max_response_items": {
+ "type": "integer",
+ "format": "int64",
+ "x-go-name": "MaxResponseItems"
+ }
+ },
+ "x-go-package": "code.gitea.io/gitea/modules/structs"
+ },
"GeneralRepoSettings": {
"description": "GeneralRepoSettings contains global repository settings exposed by API",
"type": "object",
@@ -15197,6 +15241,12 @@
}
}
},
+ "GeneralAPISettings": {
+ "description": "GeneralAPISettings",
+ "schema": {
+ "$ref": "#/definitions/GeneralAPISettings"
+ }
+ },
"GeneralRepoSettings": {
"description": "GeneralRepoSettings",
"schema": {