mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-29 10:57:44 +09:00 
			
		
		
		
	API: Expose its limitation settings (#12714)
* API: Expose its limitation settings * TESTs Co-authored-by: zeripath <art27@cantab.net> Co-authored-by: techknowlogick <techknowlogick@gitea.io>
This commit is contained in:
		| @@ -11,25 +11,11 @@ import ( | |||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
| 	"code.gitea.io/gitea/models" | 	"code.gitea.io/gitea/models" | ||||||
| 	"code.gitea.io/gitea/modules/setting" |  | ||||||
| 	api "code.gitea.io/gitea/modules/structs" | 	api "code.gitea.io/gitea/modules/structs" | ||||||
|  |  | ||||||
| 	"github.com/stretchr/testify/assert" | 	"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) { | func TestAPIIssuesReactions(t *testing.T) { | ||||||
| 	defer prepareTestEnv(t)() | 	defer prepareTestEnv(t)() | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										49
									
								
								integrations/api_settings_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								integrations/api_settings_test.go
									
									
									
									
									
										Normal file
									
								
							| @@ -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) | ||||||
|  | } | ||||||
| @@ -14,3 +14,11 @@ type GeneralRepoSettings struct { | |||||||
| type GeneralUISettings struct { | type GeneralUISettings struct { | ||||||
| 	AllowedReactions []string `json:"allowed_reactions"` | 	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"` | ||||||
|  | } | ||||||
|   | |||||||
| @@ -521,6 +521,7 @@ func RegisterRoutes(m *macaron.Macaron) { | |||||||
| 		m.Post("/markdown/raw", misc.MarkdownRaw) | 		m.Post("/markdown/raw", misc.MarkdownRaw) | ||||||
| 		m.Group("/settings", func() { | 		m.Group("/settings", func() { | ||||||
| 			m.Get("/ui", settings.GetGeneralUISettings) | 			m.Get("/ui", settings.GetGeneralUISettings) | ||||||
|  | 			m.Get("/api", settings.GetGeneralAPISettings) | ||||||
| 			m.Get("/repository", settings.GetGeneralRepoSettings) | 			m.Get("/repository", settings.GetGeneralRepoSettings) | ||||||
| 		}) | 		}) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -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 | // GetGeneralRepoSettings returns instance's global settings for repositories | ||||||
| func GetGeneralRepoSettings(ctx *context.APIContext) { | func GetGeneralRepoSettings(ctx *context.APIContext) { | ||||||
| 	// swagger:operation GET /settings/repository settings getGeneralRepositorySettings | 	// swagger:operation GET /settings/repository settings getGeneralRepositorySettings | ||||||
|   | |||||||
| @@ -19,3 +19,10 @@ type swaggerResponseGeneralUISettings struct { | |||||||
| 	// in:body | 	// in:body | ||||||
| 	Body api.GeneralUISettings `json:"body"` | 	Body api.GeneralUISettings `json:"body"` | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // GeneralAPISettings | ||||||
|  | // swagger:response GeneralAPISettings | ||||||
|  | type swaggerResponseGeneralAPISettings struct { | ||||||
|  | 	// in:body | ||||||
|  | 	Body api.GeneralAPISettings `json:"body"` | ||||||
|  | } | ||||||
|   | |||||||
| @@ -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": { |     "/settings/repository": { | ||||||
|       "get": { |       "get": { | ||||||
|         "produces": [ |         "produces": [ | ||||||
| @@ -12977,6 +12994,33 @@ | |||||||
|       }, |       }, | ||||||
|       "x-go-package": "code.gitea.io/gitea/modules/structs" |       "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": { |     "GeneralRepoSettings": { | ||||||
|       "description": "GeneralRepoSettings contains global repository settings exposed by API", |       "description": "GeneralRepoSettings contains global repository settings exposed by API", | ||||||
|       "type": "object", |       "type": "object", | ||||||
| @@ -15197,6 +15241,12 @@ | |||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "GeneralAPISettings": { | ||||||
|  |       "description": "GeneralAPISettings", | ||||||
|  |       "schema": { | ||||||
|  |         "$ref": "#/definitions/GeneralAPISettings" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "GeneralRepoSettings": { |     "GeneralRepoSettings": { | ||||||
|       "description": "GeneralRepoSettings", |       "description": "GeneralRepoSettings", | ||||||
|       "schema": { |       "schema": { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user