mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +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" | ||||
|  | ||||
| 	"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)() | ||||
|  | ||||
|   | ||||
							
								
								
									
										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 { | ||||
| 	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.Group("/settings", func() { | ||||
| 			m.Get("/ui", settings.GetGeneralUISettings) | ||||
| 			m.Get("/api", settings.GetGeneralAPISettings) | ||||
| 			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 | ||||
| func GetGeneralRepoSettings(ctx *context.APIContext) { | ||||
| 	// swagger:operation GET /settings/repository settings getGeneralRepositorySettings | ||||
|   | ||||
| @@ -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"` | ||||
| } | ||||
|   | ||||
| @@ -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": { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user