From 8fdf1f44f0a8a72f5a7c935097a635ce184d92bc Mon Sep 17 00:00:00 2001 From: Sydonian <794346190@qq.com> Date: Thu, 2 Jan 2025 09:56:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=A4=8D=E5=88=B6Object?= =?UTF-8?q?=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sdks/storage/cdsapi/object.go | 42 +++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/sdks/storage/cdsapi/object.go b/sdks/storage/cdsapi/object.go index dfc1036..03774d2 100644 --- a/sdks/storage/cdsapi/object.go +++ b/sdks/storage/cdsapi/object.go @@ -456,6 +456,48 @@ func (c *ObjectService) DeleteByPath(req ObjectDeleteByPath) error { return jsonResp.ToError() } +const ObjectClonePath = "/object/clone" + +type ObjectClone struct { + UserID cdssdk.UserID `json:"userID" binding:"required"` + Clonings []CloningObject `json:"clonings" binding:"required"` +} + +type CloningObject struct { + ObjectID cdssdk.ObjectID `json:"objectID" binding:"required"` + NewPath string `json:"newPath" binding:"required"` + NewPackageID cdssdk.PackageID `json:"newPackageID" binding:"required"` +} + +type ObjectCloneResp struct { + Objects []*cdssdk.Object `json:"objects"` +} + +func (c *ObjectService) Clone(req ObjectClone) (*ObjectCloneResp, error) { + url, err := url.JoinPath(c.baseURL, ObjectClonePath) + if err != nil { + return nil, err + } + + resp, err := http2.PostJSON(url, http2.RequestParam{ + Body: req, + }) + if err != nil { + return nil, err + } + + jsonResp, err := ParseJSONResponse[response[ObjectCloneResp]](resp) + if err != nil { + return nil, err + } + + if jsonResp.Code == errorcode.OK { + return &jsonResp.Data, nil + } + + return nil, jsonResp.ToError() +} + const ObjectGetPackageObjectsPath = "/object/getPackageObjects" type ObjectGetPackageObjects struct {