From e1b3a250085195122c3b41b998504692f47fcb63 Mon Sep 17 00:00:00 2001 From: Unknwon Date: Sun, 2 Dec 2018 12:55:05 -0500 Subject: [PATCH] api/repo: support edit repository issue tracker (gogs/go-gogs-client#94) --- gogs.go | 2 +- pkg/context/api.go | 5 +++++ routes/api/v1/api.go | 2 ++ routes/api/v1/repo/repo.go | 31 +++++++++++++++++++++++++++++++ templates/.VERSION | 2 +- 5 files changed, 40 insertions(+), 2 deletions(-) diff --git a/gogs.go b/gogs.go index b87b6c9ac..a433ef241 100644 --- a/gogs.go +++ b/gogs.go @@ -16,7 +16,7 @@ import ( "github.com/gogs/gogs/pkg/setting" ) -const APP_VER = "0.11.72.1201" +const APP_VER = "0.11.73.1202" func init() { setting.AppVer = APP_VER diff --git a/pkg/context/api.go b/pkg/context/api.go index 7df5b23aa..439fb5dfd 100644 --- a/pkg/context/api.go +++ b/pkg/context/api.go @@ -44,6 +44,11 @@ func (c *APIContext) Error(status int, title string, obj interface{}) { }) } +// NoContent renders the 204 response. +func (c *APIContext) NoContent() { + c.Status(http.StatusNoContent) +} + // NotFound renders the 404 response. func (c *APIContext) NotFound() { c.Status(http.StatusNotFound) diff --git a/routes/api/v1/api.go b/routes/api/v1/api.go index 3ac5ef98c..2fb2ebb0c 100644 --- a/routes/api/v1/api.go +++ b/routes/api/v1/api.go @@ -293,6 +293,8 @@ func RegisterRoutes(m *macaron.Macaron) { Patch(reqRepoWriter(), bind(api.EditMilestoneOption{}), repo.EditMilestone). Delete(reqRepoWriter(), repo.DeleteMilestone) }) + + m.Patch("/issue-tracker", bind(api.EditIssueTrackerOption{}), repo.IssueTracker) m.Post("/mirror-sync", repo.MirrorSync) m.Get("/editorconfig/:filename", context.RepoRef(), repo.GetEditorconfig) }, repoAssignment()) diff --git a/routes/api/v1/repo/repo.go b/routes/api/v1/repo/repo.go index 6d4d0497a..9c1ab4766 100644 --- a/routes/api/v1/repo/repo.go +++ b/routes/api/v1/repo/repo.go @@ -291,6 +291,7 @@ func Migrate(c *context.APIContext, f form.MigrateRepo) { c.JSON(201, repo.APIFormat(&api.Permission{true, true, true})) } +// FIXME: Inject to *context.APIContext func parseOwnerAndRepo(c *context.APIContext) (*models.User, *models.Repository) { owner, err := models.GetUserByName(c.Params(":username")) if err != nil { @@ -373,6 +374,36 @@ func ListForks(c *context.APIContext) { c.JSON(200, &apiForks) } +func IssueTracker(c *context.APIContext, form api.EditIssueTrackerOption) { + _, repo := parseOwnerAndRepo(c) + if c.Written() { + return + } + + if form.EnableIssues != nil { + repo.EnableIssues = *form.EnableIssues + } + if form.EnableExternalTracker != nil { + repo.EnableExternalTracker = *form.EnableExternalTracker + } + if form.ExternalTrackerURL != nil { + repo.ExternalTrackerURL = *form.ExternalTrackerURL + } + if form.TrackerURLFormat != nil { + repo.ExternalTrackerFormat = *form.TrackerURLFormat + } + if form.TrackerIssueStyle != nil { + repo.ExternalTrackerStyle = *form.TrackerIssueStyle + } + + if err := models.UpdateRepository(repo, false); err != nil { + c.ServerError("UpdateRepository", err) + return + } + + c.NoContent() +} + func MirrorSync(c *context.APIContext) { _, repo := parseOwnerAndRepo(c) if c.Written() { diff --git a/templates/.VERSION b/templates/.VERSION index 2f9cfa540..8b3d065d5 100644 --- a/templates/.VERSION +++ b/templates/.VERSION @@ -1 +1 @@ -0.11.72.1201 +0.11.73.1202