diff options
author | Paul Barton <28630076+paulbarton90@users.noreply.github.com> | 2021-01-02 23:47:47 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-02 18:47:47 -0500 |
commit | 7576e37a65729363370d6672ff6e69e87b68ac5f (patch) | |
tree | c2e885826e6f744b88949c9451d6a206ff48abcd /routers | |
parent | 3abea9e9eb8cbe42d1ec0afa70b4941d4066130f (diff) | |
download | gitea-7576e37a65729363370d6672ff6e69e87b68ac5f.tar.gz gitea-7576e37a65729363370d6672ff6e69e87b68ac5f.zip |
Add MirrorInterval to the API (#14163)
* Added MirrorInterval to the API
* Remove MirrorInterval from CreateRepository
* Removed Duplicate UpdateMirror Function
* Updated Error Logging
* Update Log Message for is not Mirror
Co-authored-by: 6543 <6543@obermui.de>
* Delete Debug Statement that snuck in
Co-authored-by: zeripath <art27@cantab.net>
* Add Check for If Interval is too small
* Output to API Call
* Add Error Object when time is Less than Min Interval
* Frequency Error Message
Co-authored-by: zeripath <art27@cantab.net>
* Allow Zero Mirror Interval
Co-authored-by: 6543 <6543@obermui.de>
Co-authored-by: zeripath <art27@cantab.net>
Diffstat (limited to 'routers')
-rw-r--r-- | routers/api/v1/repo/migrate.go | 1 | ||||
-rw-r--r-- | routers/api/v1/repo/repo.go | 39 |
2 files changed, 40 insertions, 0 deletions
diff --git a/routers/api/v1/repo/migrate.go b/routers/api/v1/repo/migrate.go index 3fd9300904..f07599399c 100644 --- a/routers/api/v1/repo/migrate.go +++ b/routers/api/v1/repo/migrate.go @@ -141,6 +141,7 @@ func Migrate(ctx *context.APIContext, form api.MigrateRepoOptions) { PullRequests: form.PullRequests, Releases: form.Releases, GitServiceType: gitServiceType, + MirrorInterval: form.MirrorInterval, } if opts.Mirror { opts.Issues = false diff --git a/routers/api/v1/repo/repo.go b/routers/api/v1/repo/repo.go index f1df31ccac..82d380a814 100644 --- a/routers/api/v1/repo/repo.go +++ b/routers/api/v1/repo/repo.go @@ -9,6 +9,7 @@ import ( "fmt" "net/http" "strings" + "time" "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" @@ -501,6 +502,12 @@ func Edit(ctx *context.APIContext, opts api.EditRepoOption) { } } + if opts.MirrorInterval != nil { + if err := updateMirrorInterval(ctx, opts); err != nil { + return + } + } + ctx.JSON(http.StatusOK, convert.ToRepo(ctx.Repo.Repository, ctx.Repo.AccessMode)) } @@ -783,6 +790,38 @@ func updateRepoArchivedState(ctx *context.APIContext, opts api.EditRepoOption) e return nil } +// updateMirrorInterval updates the repo's mirror Interval +func updateMirrorInterval(ctx *context.APIContext, opts api.EditRepoOption) error { + repo := ctx.Repo.Repository + + if opts.MirrorInterval != nil { + if !repo.IsMirror { + err := fmt.Errorf("repo is not a mirror, can not change mirror interval") + ctx.Error(http.StatusUnprocessableEntity, err.Error(), err) + return err + } + if err := repo.GetMirror(); err != nil { + log.Error("Failed to get mirror: %s", err) + ctx.Error(http.StatusInternalServerError, "MirrorInterval", err) + return err + } + if interval, err := time.ParseDuration(*opts.MirrorInterval); err == nil { + repo.Mirror.Interval = interval + if err := models.UpdateMirror(repo.Mirror); err != nil { + log.Error("Failed to Set Mirror Interval: %s", err) + ctx.Error(http.StatusUnprocessableEntity, "MirrorInterval", err) + return err + } + log.Trace("Repository %s/%s Mirror Interval was Updated to %s", ctx.Repo.Owner.Name, repo.Name, interval) + } else { + log.Error("Wrong format for MirrorInternal Sent: %s", err) + ctx.Error(http.StatusUnprocessableEntity, "MirrorInterval", err) + return err + } + } + return nil +} + // Delete one repository func Delete(ctx *context.APIContext) { // swagger:operation DELETE /repos/{owner}/{repo} repository repoDelete |