github.com/qiniu/go-sdk/v7@v7.27.0/storagev2/apis/fetch_object/api.go (about) 1 // THIS FILE IS GENERATED BY api-generator, DO NOT EDIT DIRECTLY! 2 3 // 从指定 URL 抓取指定名称的对象并存储到该空间中 4 package fetch_object 5 6 import ( 7 "encoding/json" 8 9 credentials "github.com/qiniu/go-sdk/v7/storagev2/credentials" 10 errors "github.com/qiniu/go-sdk/v7/storagev2/errors" 11 ) 12 13 // 调用 API 所用的请求 14 type Request struct { 15 FromUrl string // 指定抓取的 URL 16 ToEntry string // 指定目标对象空间与目标对象名称,格式为 <目标对象空间>:<目标对象名称> 17 Host string // 指定抓取 URL 请求用的 HOST 参数 18 Credentials credentials.CredentialsProvider // 鉴权参数,用于生成鉴权凭证,如果为空,则使用 HTTPClientOptions 中的 CredentialsProvider 19 } 20 21 // 获取 API 所用的响应 22 type Response struct { 23 Hash string // 抓取的对象内容的 Etag 值 24 ObjectName string // 抓取后保存的对象名称 25 Size int64 // 对象大小,单位为字节 26 MimeType string // 对象 MIME 类型 27 } 28 29 // 抓取到的文件元信息 30 type ( 31 FetchedObjectMetadata = Response 32 jsonResponse struct { 33 Hash string `json:"hash"` // 抓取的对象内容的 Etag 值 34 ObjectName string `json:"key"` // 抓取后保存的对象名称 35 Size int64 `json:"fsize,omitempty"` // 对象大小,单位为字节 36 MimeType string `json:"mimeType"` // 对象 MIME 类型 37 } 38 ) 39 40 func (j *Response) MarshalJSON() ([]byte, error) { 41 if err := j.validate(); err != nil { 42 return nil, err 43 } 44 return json.Marshal(&jsonResponse{Hash: j.Hash, ObjectName: j.ObjectName, Size: j.Size, MimeType: j.MimeType}) 45 } 46 47 func (j *Response) UnmarshalJSON(data []byte) error { 48 var nj jsonResponse 49 if err := json.Unmarshal(data, &nj); err != nil { 50 return err 51 } 52 j.Hash = nj.Hash 53 j.ObjectName = nj.ObjectName 54 j.Size = nj.Size 55 j.MimeType = nj.MimeType 56 return nil 57 } 58 59 func (j *Response) validate() error { 60 if j.Hash == "" { 61 return errors.MissingRequiredFieldError{Name: "Hash"} 62 } 63 if j.ObjectName == "" { 64 return errors.MissingRequiredFieldError{Name: "ObjectName"} 65 } 66 if j.MimeType == "" { 67 return errors.MissingRequiredFieldError{Name: "MimeType"} 68 } 69 return nil 70 }