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  }