From 8f0182c3229dfbb8d731557e5006e39bd616b4e9 Mon Sep 17 00:00:00 2001 From: John Olheiser <42128690+jolheiser@users.noreply.github.com> Date: Wed, 12 Jun 2019 16:07:24 -0500 Subject: [PATCH] API error cleanup (#7186) --- integrations/api_repo_file_content_test.go | 3 +-- integrations/api_repo_file_create_test.go | 3 +-- integrations/api_repo_file_delete_test.go | 4 ++-- integrations/api_repo_file_update_test.go | 3 +-- modules/base/base.go | 3 --- modules/context/api.go | 13 ++----------- modules/setting/setting.go | 12 +++++++++--- 7 files changed, 16 insertions(+), 25 deletions(-) diff --git a/integrations/api_repo_file_content_test.go b/integrations/api_repo_file_content_test.go index 896d811083..7a6025d423 100644 --- a/integrations/api_repo_file_content_test.go +++ b/integrations/api_repo_file_content_test.go @@ -11,7 +11,6 @@ import ( "testing" "code.gitea.io/gitea/models" - "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" @@ -98,7 +97,7 @@ func testAPIGetFileContents(t *testing.T, u *url.URL) { resp = session.MakeRequest(t, req, http.StatusInternalServerError) expectedAPIError := context.APIError{ Message: "object does not exist [id: " + branch + ", rel_path: ]", - URL: base.DocURL, + URL: setting.API.SwaggerURL, } var apiError context.APIError DecodeJSON(t, resp, &apiError) diff --git a/integrations/api_repo_file_create_test.go b/integrations/api_repo_file_create_test.go index 3bb2ecb812..973ed9dfa5 100644 --- a/integrations/api_repo_file_create_test.go +++ b/integrations/api_repo_file_create_test.go @@ -13,7 +13,6 @@ import ( "testing" "code.gitea.io/gitea/models" - "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/setting" @@ -160,7 +159,7 @@ func TestAPICreateFile(t *testing.T) { resp = session.MakeRequest(t, req, http.StatusInternalServerError) expectedAPIError := context.APIError{ Message: "repository file already exists [path: " + treePath + "]", - URL: base.DocURL, + URL: setting.API.SwaggerURL, } var apiError context.APIError DecodeJSON(t, resp, &apiError) diff --git a/integrations/api_repo_file_delete_test.go b/integrations/api_repo_file_delete_test.go index e9029a669b..2f5f9028a8 100644 --- a/integrations/api_repo_file_delete_test.go +++ b/integrations/api_repo_file_delete_test.go @@ -11,8 +11,8 @@ import ( "testing" "code.gitea.io/gitea/models" - "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" + "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "github.com/stretchr/testify/assert" @@ -102,7 +102,7 @@ func TestAPIDeleteFile(t *testing.T) { resp = session.MakeRequest(t, req, http.StatusInternalServerError) expectedAPIError := context.APIError{ Message: "sha does not match [given: " + deleteFileOptions.SHA + ", expected: " + correctSHA + "]", - URL: base.DocURL, + URL: setting.API.SwaggerURL, } var apiError context.APIError DecodeJSON(t, resp, &apiError) diff --git a/integrations/api_repo_file_update_test.go b/integrations/api_repo_file_update_test.go index eab7090df6..90fecf59d0 100644 --- a/integrations/api_repo_file_update_test.go +++ b/integrations/api_repo_file_update_test.go @@ -13,7 +13,6 @@ import ( "testing" "code.gitea.io/gitea/models" - "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/setting" @@ -173,7 +172,7 @@ func TestAPIUpdateFile(t *testing.T) { resp = session.MakeRequest(t, req, http.StatusInternalServerError) expectedAPIError := context.APIError{ Message: "sha does not match [given: " + updateFileOptions.SHA + ", expected: " + correctSHA + "]", - URL: base.DocURL, + URL: setting.API.SwaggerURL, } var apiError context.APIError DecodeJSON(t, resp, &apiError) diff --git a/modules/base/base.go b/modules/base/base.go index 0ba72c328e..026f68f646 100644 --- a/modules/base/base.go +++ b/modules/base/base.go @@ -4,9 +4,6 @@ package base -// DocURL api doc url -const DocURL = "https://godoc.org/github.com/go-gitea/go-sdk/gitea" - type ( // TplName template relative path type TplName string diff --git a/modules/context/api.go b/modules/context/api.go index 61f6514759..9be3fb512c 100644 --- a/modules/context/api.go +++ b/modules/context/api.go @@ -7,14 +7,11 @@ package context import ( "fmt" - "net/url" - "path" "strings" "github.com/go-macaron/csrf" "code.gitea.io/gitea/models" - "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" @@ -76,7 +73,7 @@ func (ctx *APIContext) Error(status int, title string, obj interface{}) { ctx.JSON(status, APIError{ Message: message, - URL: base.DocURL, + URL: setting.API.SwaggerURL, }) } @@ -180,15 +177,9 @@ func (ctx *APIContext) NotFound(objs ...interface{}) { } } - u, err := url.Parse(setting.AppURL) - if err != nil { - ctx.Error(500, "Invalid AppURL", err) - return - } - u.Path = path.Join(u.Path, "api", "swagger") ctx.JSON(404, map[string]interface{}{ "message": message, - "documentation_url": u.String(), + "documentation_url": setting.API.SwaggerURL, "errors": errors, }) } diff --git a/modules/setting/setting.go b/modules/setting/setting.go index b550836bc1..5471a0b61d 100644 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -297,12 +297,14 @@ var ( // API settings API = struct { EnableSwagger bool + SwaggerURL string MaxResponseItems int DefaultPagingNum int DefaultGitTreesPerPage int DefaultMaxBlobSize int64 }{ EnableSwagger: true, + SwaggerURL: "", MaxResponseItems: 50, DefaultPagingNum: 30, DefaultGitTreesPerPage: 1000, @@ -581,17 +583,17 @@ func NewContext() { AppURL = strings.TrimRight(AppURL, "/") + "/" // Check if has app suburl. - url, err := url.Parse(AppURL) + appURL, err := url.Parse(AppURL) if err != nil { log.Fatal("Invalid ROOT_URL '%s': %s", AppURL, err) } // Suburl should start with '/' and end without '/', such as '/{subpath}'. // This value is empty if site does not have sub-url. - AppSubURL = strings.TrimSuffix(url.Path, "/") + AppSubURL = strings.TrimSuffix(appURL.Path, "/") AppSubURLDepth = strings.Count(AppSubURL, "/") // Check if Domain differs from AppURL domain than update it to AppURL's domain // TODO: Can be replaced with url.Hostname() when minimal GoLang version is 1.8 - urlHostname := strings.SplitN(url.Host, ":", 2)[0] + urlHostname := strings.SplitN(appURL.Host, ":", 2)[0] if urlHostname != Domain && net.ParseIP(urlHostname) == nil { Domain = urlHostname } @@ -900,6 +902,10 @@ func NewContext() { log.Fatal("Failed to map Metrics settings: %v", err) } + u := *appURL + u.Path = path.Join(u.Path, "api", "swagger") + API.SwaggerURL = u.String() + newCron() newGit()