From 228d6931f41a7fdda356f0698e701ba3704d82c6 Mon Sep 17 00:00:00 2001 From: ysicing Date: Sun, 24 Dec 2023 20:15:31 +0000 Subject: [PATCH] feat(repo-mirrors): add repo sync mirrors (#640) add sync mirrors Signed-off-by: ysicing Co-authored-by: Lunny Xiao Reviewed-on: https://gitea.com/gitea/go-sdk/pulls/640 Reviewed-by: Lunny Xiao Co-authored-by: ysicing Co-committed-by: ysicing --- gitea/repo_mirror.go | 45 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 gitea/repo_mirror.go diff --git a/gitea/repo_mirror.go b/gitea/repo_mirror.go new file mode 100644 index 0000000..df32094 --- /dev/null +++ b/gitea/repo_mirror.go @@ -0,0 +1,45 @@ +// Copyright 2023 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package gitea + +import ( + "bytes" + "encoding/json" + "fmt" +) + +type CreatePushMirrorOption struct { + Interval string `json:"interval"` + RemoteAddress string `json:"remote_address"` + RemotePassword string `json:"remote_password"` + RemoteUsername string `json:"remote_username"` + SyncONCommit bool `json:"sync_on_commit"` +} + +// PushMirrorResponse returns a git push mirror +type PushMirrorResponse struct { + Created string `json:"created"` + Interval string `json:"interval"` + LastError string `json:"last_error"` + LastUpdate string `json:"last_update"` + RemoteAddress string `json:"remote_address"` + RemoteName string `json:"remote_name"` + RepoName string `json:"repo_name"` + SyncONCommit bool `json:"sync_on_commit"` +} + +// PushMirrors add a push mirror to the repository +func (c *Client) PushMirrors(user, repo string, opt CreatePushMirrorOption) (*PushMirrorResponse, *Response, error) { + if err := escapeValidatePathSegments(&user, &repo); err != nil { + return nil, nil, err + } + body, err := json.Marshal(opt) + if err != nil { + return nil, nil, err + } + pm := new(PushMirrorResponse) + resp, err := c.getParsedResponse("POST", fmt.Sprintf("/repos/%s/%s/push_mirrors", user, repo), jsonHeader, bytes.NewReader(body), &pm) + return pm, resp, err +}