mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-03 21:08:25 +00:00 
			
		
		
		
	Backport #11574 add API specific InternalServerError() InternalServerError
This commit is contained in:
		@@ -7,6 +7,7 @@ package context
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
 | 
						"net/http"
 | 
				
			||||||
	"net/url"
 | 
						"net/url"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -64,18 +65,18 @@ type APINotFound struct{}
 | 
				
			|||||||
// swagger:response redirect
 | 
					// swagger:response redirect
 | 
				
			||||||
type APIRedirect struct{}
 | 
					type APIRedirect struct{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Error responses error message to client with given message.
 | 
					// Error responds with an error message to client with given obj as the message.
 | 
				
			||||||
// If status is 500, also it prints error to log.
 | 
					// If status is 500, also it prints error to log.
 | 
				
			||||||
func (ctx *APIContext) Error(status int, title string, obj interface{}) {
 | 
					func (ctx *APIContext) Error(status int, title string, obj interface{}) {
 | 
				
			||||||
	var message string
 | 
						var message string
 | 
				
			||||||
	if err, ok := obj.(error); ok {
 | 
						if err, ok := obj.(error); ok {
 | 
				
			||||||
		message = err.Error()
 | 
							message = err.Error()
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		message = obj.(string)
 | 
							message = fmt.Sprintf("%s", obj)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if status == 500 {
 | 
						if status == http.StatusInternalServerError {
 | 
				
			||||||
		log.Error("%s: %s", title, message)
 | 
							log.ErrorWithSkip(1, "%s: %s", title, message)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ctx.JSON(status, APIError{
 | 
						ctx.JSON(status, APIError{
 | 
				
			||||||
@@ -84,6 +85,22 @@ func (ctx *APIContext) Error(status int, title string, obj interface{}) {
 | 
				
			|||||||
	})
 | 
						})
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// InternalServerError responds with an error message to the client with the error as a message
 | 
				
			||||||
 | 
					// and the file and line of the caller.
 | 
				
			||||||
 | 
					func (ctx *APIContext) InternalServerError(err error) {
 | 
				
			||||||
 | 
						log.ErrorWithSkip(1, "InternalServerError: %v", err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var message string
 | 
				
			||||||
 | 
						if macaron.Env != macaron.PROD {
 | 
				
			||||||
 | 
							message = err.Error()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ctx.JSON(http.StatusInternalServerError, APIError{
 | 
				
			||||||
 | 
							Message: message,
 | 
				
			||||||
 | 
							URL:     setting.API.SwaggerURL,
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func genAPILinks(curURL *url.URL, total, pageSize, curPage int) []string {
 | 
					func genAPILinks(curURL *url.URL, total, pageSize, curPage int) []string {
 | 
				
			||||||
	page := NewPagination(total, pageSize, curPage, 0)
 | 
						page := NewPagination(total, pageSize, curPage, 0)
 | 
				
			||||||
	paginater := page.Paginater
 | 
						paginater := page.Paginater
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user