73 lines
2.4 KiB
Go
73 lines
2.4 KiB
Go
package client
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"net/url"
|
|
"path"
|
|
"time"
|
|
)
|
|
|
|
type RepositoryPushMirror struct {
|
|
Created time.Time `json:"created"`
|
|
Interval string `json:"interval"`
|
|
LastError string `json:"last_error"`
|
|
LastUpdate time.Time `json:"last_update"`
|
|
PublicKey string `json:"public_key"`
|
|
RemoteAddress string `json:"remote_address"`
|
|
RemoteName string `json:"remote_name"`
|
|
RepoName string `json:"repo_name"`
|
|
SyncOnCommit bool `json:"sync_on_commit"`
|
|
}
|
|
|
|
func (c *Client) RepositoryPushMirrorCreate(ctx context.Context,
|
|
owner string,
|
|
repo string,
|
|
interval string,
|
|
remoteAddress string,
|
|
remotePassword string,
|
|
remoteUsername string,
|
|
syncOnCommit bool,
|
|
useSsh bool,
|
|
) (*RepositoryPushMirror, error) {
|
|
uriRef := url.URL{Path: path.Join("api/v1/repos", owner, repo, "push_mirrors")}
|
|
type Payload 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"`
|
|
UseSsh bool `json:"use_ssh"`
|
|
}
|
|
payload := Payload{
|
|
Interval: interval,
|
|
RemoteAddress: remoteAddress,
|
|
RemotePassword: remotePassword,
|
|
RemoteUsername: remoteUsername,
|
|
SyncOnCommit: syncOnCommit,
|
|
UseSsh: useSsh,
|
|
}
|
|
response := RepositoryPushMirror{}
|
|
if _, err := c.send(ctx, "POST", &uriRef, &payload, &response); err != nil {
|
|
return nil, fmt.Errorf("failed to create repository push mirror: %w", err)
|
|
}
|
|
return &response, nil
|
|
}
|
|
|
|
func (c *Client) RepositoryPushMirrorDelete(ctx context.Context, owner string, repo string, name string) (*RepositoryPushMirror, error) {
|
|
uriRef := url.URL{Path: path.Join("api/v1/repos", owner, repo, "push_mirrors", name)}
|
|
response := RepositoryPushMirror{}
|
|
if _, err := c.send(ctx, "DELETE", &uriRef, nil, &response); err != nil {
|
|
return nil, fmt.Errorf("failed to delete repository push mirror: %w", err)
|
|
}
|
|
return &response, nil
|
|
}
|
|
|
|
func (c *Client) RepositoryPushMirrorGet(ctx context.Context, owner string, repo string, name string) (*RepositoryPushMirror, error) {
|
|
uriRef := url.URL{Path: path.Join("api/v1/repos", owner, repo, "push_mirrors", name)}
|
|
response := RepositoryPushMirror{}
|
|
if _, err := c.send(ctx, "GET", &uriRef, nil, &response); err != nil {
|
|
return nil, fmt.Errorf("failed to get repository push mirrors: %w", err)
|
|
}
|
|
return &response, nil
|
|
}
|