From f995bcc87a9e693883292247ec985df7541d06bf Mon Sep 17 00:00:00 2001 From: Jonas Date: Wed, 19 Apr 2017 13:09:49 +0200 Subject: [PATCH] Add repo mirror sync API endpoint (#1508) * API: Add repo mirror sync * Correct error message * Change http status to 200 --- routers/api/v1/api.go | 1 + routers/api/v1/repo/repo.go | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index 2a1f5e196c..74aa995c97 100644 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -402,6 +402,7 @@ func RegisterRoutes(m *macaron.Macaron) { Patch(bind(api.EditReleaseOption{}), repo.EditRelease). Delete(repo.DeleteRelease) }) + m.Post("/mirror-sync", repo.MirrorSync) m.Get("/editorconfig/:filename", context.RepoRef(), repo.GetEditorconfig) m.Group("/pulls", func() { m.Combo("").Get(bind(api.ListPullRequestsOptions{}), repo.ListPullRequests).Post(reqRepoWriter(), bind(api.CreatePullRequestOption{}), repo.CreatePullRequest) diff --git a/routers/api/v1/repo/repo.go b/routers/api/v1/repo/repo.go index 317b0c57a1..0f22eaeb8f 100644 --- a/routers/api/v1/repo/repo.go +++ b/routers/api/v1/repo/repo.go @@ -269,3 +269,15 @@ func Delete(ctx *context.APIContext) { log.Trace("Repository deleted: %s/%s", owner.Name, repo.Name) ctx.Status(204) } + +// MirrorSync adds a mirrored repository to the sync queue +func MirrorSync(ctx *context.APIContext) { + repo := ctx.Repo.Repository + + if !ctx.Repo.IsWriter() { + ctx.Error(403, "MirrorSync", "Must have write access") + } + + go models.MirrorQueue.Add(repo.ID) + ctx.Status(200) +}