Browse Source

Merge branch 'feature_gxh'

gitlink
Sydonian 11 months ago
parent
commit
ae559d738e
2 changed files with 120 additions and 3 deletions
  1. +1
    -0
      consts/errorcode/error_code.go
  2. +119
    -3
      sdks/storage/cdsapi/object.go

+ 1
- 0
consts/errorcode/error_code.go View File

@@ -4,6 +4,7 @@ const (
OK = "OK" OK = "OK"
OperationFailed = "OperationFailed" OperationFailed = "OperationFailed"
DataNotFound = "DataNotFound" DataNotFound = "DataNotFound"
DataExists = "DataExists"
BadArgument = "BadArgument" BadArgument = "BadArgument"
TaskNotFound = "TaskNotFound" TaskNotFound = "TaskNotFound"
) )

+ 119
- 3
sdks/storage/cdsapi/object.go View File

@@ -28,9 +28,10 @@ func (c *Client) Object() *ObjectService {
const ObjectListPath = "/object/list" const ObjectListPath = "/object/list"


type ObjectList struct { type ObjectList struct {
UserID cdssdk.UserID `form:"userID" binding:"required"`
PackageID cdssdk.PackageID `form:"packageID" binding:"required"`
PathPrefix string `form:"pathPrefix" binding:"required"`
UserID cdssdk.UserID `form:"userID" binding:"required"`
PackageID cdssdk.PackageID `form:"packageID" binding:"required"`
Path string `form:"path" binding:"required"`
IsPrefix bool `form:"isPrefix"`
} }
type ObjectListResp struct { type ObjectListResp struct {
Objects []cdssdk.Object `json:"objects"` Objects []cdssdk.Object `json:"objects"`
@@ -178,6 +179,51 @@ func (c *ObjectService) Download(req ObjectDownload) (*DownloadingObject, error)
}, nil }, nil
} }


const ObjectDownloadByPathPath = "/object/downloadByPath"

type ObjectDownloadByPath struct {
UserID cdssdk.UserID `form:"userID" json:"userID" binding:"required"`
PackageID cdssdk.PackageID `form:"packageID" json:"packageID" binding:"required"`
Path string `form:"path" json:"path" binding:"required"`
Offset int64 `form:"offset" json:"offset,omitempty"`
Length *int64 `form:"length" json:"length,omitempty"`
}

func (c *ObjectService) DownloadByPath(req ObjectDownloadByPath) (*DownloadingObject, error) {
url, err := url.JoinPath(c.baseURL, ObjectDownloadByPathPath)
if err != nil {
return nil, err
}

resp, err := http2.GetJSON(url, http2.RequestParam{
Query: req,
})
if err != nil {
return nil, err
}

contType := resp.Header.Get("Content-Type")

if strings.Contains(contType, http2.ContentTypeJSON) {
var codeResp response[any]
if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil {
return nil, fmt.Errorf("parsing response: %w", err)
}

return nil, codeResp.ToError()
}

_, params, err := mime.ParseMediaType(resp.Header.Get("Content-Disposition"))
if err != nil {
return nil, fmt.Errorf("parsing content disposition: %w", err)
}

return &DownloadingObject{
Path: params["filename"],
File: resp.Body,
}, nil
}

const ObjectUpdateInfoPath = "/object/updateInfo" const ObjectUpdateInfoPath = "/object/updateInfo"


type UpdatingObject struct { type UpdatingObject struct {
@@ -223,6 +269,42 @@ func (c *ObjectService) UpdateInfo(req ObjectUpdateInfo) (*ObjectUpdateInfoResp,
return nil, jsonResp.ToError() return nil, jsonResp.ToError()
} }


const ObjectUpdateInfoByPathPath = "/object/updateInfoByPath"

type ObjectUpdateInfoByPath struct {
UserID cdssdk.UserID `json:"userID" binding:"required"`
PackageID cdssdk.PackageID `json:"packageID" binding:"required"`
Path string `json:"path" binding:"required"`
UpdateTime time.Time `json:"updateTime" binding:"required"`
}

type ObjectUpdateInfoByPathResp struct{}

func (c *ObjectService) UpdateInfoByPath(req ObjectUpdateInfoByPath) (*ObjectUpdateInfoByPathResp, error) {
url, err := url.JoinPath(c.baseURL, ObjectUpdateInfoByPathPath)
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[ObjectUpdateInfoByPathResp]](resp)
if err != nil {
return nil, err
}

if jsonResp.Code == errorcode.OK {
return &jsonResp.Data, nil
}

return nil, jsonResp.ToError()
}

const ObjectMovePath = "/object/move" const ObjectMovePath = "/object/move"


type MovingObject struct { type MovingObject struct {
@@ -304,6 +386,40 @@ func (c *ObjectService) Delete(req ObjectDelete) error {
return jsonResp.ToError() return jsonResp.ToError()
} }


const ObjectDeleteByPathPath = "/object/deleteByPath"

type ObjectDeleteByPath struct {
UserID cdssdk.UserID `json:"userID" binding:"required"`
PackageID cdssdk.PackageID `json:"packageID" binding:"required"`
Path string `json:"path" binding:"required"`
}
type ObjectDeleteByPathResp struct{}

func (c *ObjectService) DeleteByPath(req ObjectDeleteByPath) error {
url, err := url.JoinPath(c.baseURL, ObjectDeleteByPathPath)
if err != nil {
return err
}

resp, err := http2.PostJSON(url, http2.RequestParam{
Body: req,
})
if err != nil {
return err
}

jsonResp, err := ParseJSONResponse[response[ObjectDeleteByPathResp]](resp)
if err != nil {
return err
}

if jsonResp.Code == errorcode.OK {
return nil
}

return jsonResp.ToError()
}

const ObjectGetPackageObjectsPath = "/object/getPackageObjects" const ObjectGetPackageObjectsPath = "/object/getPackageObjects"


type ObjectGetPackageObjects struct { type ObjectGetPackageObjects struct {


Loading…
Cancel
Save