From 76941382183af10b224d372d9540149a21c46fb0 Mon Sep 17 00:00:00 2001 From: Sydonian <794346190@qq.com> Date: Fri, 20 Dec 2024 16:17:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=A4=8D=E5=88=B6Package?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sdks/storage/cdsapi/package.go | 38 ++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/sdks/storage/cdsapi/package.go b/sdks/storage/cdsapi/package.go index 6be57aa..a9418ff 100644 --- a/sdks/storage/cdsapi/package.go +++ b/sdks/storage/cdsapi/package.go @@ -221,6 +221,44 @@ func (c *PackageService) Delete(req PackageDelete) error { return fmt.Errorf("unknow response content type: %s", contType) } +const PackageClonePath = "/package/clone" + +type PackageClone struct { + UserID cdssdk.UserID `json:"userID" binding:"required"` + PackageID cdssdk.PackageID `json:"packageID" binding:"required"` + BucketID cdssdk.BucketID `json:"bucketID" binding:"required"` + Name string `json:"name" binding:"required"` +} + +type PackageCloneResp struct { + Package cdssdk.Package `json:"package"` +} + +func (c *PackageService) Clone(req PackageClone) (*PackageCloneResp, error) { + url, err := url.JoinPath(c.baseURL, PackageClonePath) + if err != nil { + return nil, err + } + + resp, err := http2.PostJSON(url, http2.RequestParam{ + Body: req, + }) + if err != nil { + return nil, err + } + + codeResp, err := ParseJSONResponse[response[PackageCloneResp]](resp) + if err != nil { + return nil, err + } + + if codeResp.Code == errorcode.OK { + return &codeResp.Data, nil + } + + return nil, codeResp.ToError() +} + const PackageListBucketPackagesPath = "/package/listBucketPackages" type PackageListBucketPackages struct {