github.com/qiniu/go-sdk/v7@v7.27.0/storagev2/apis/resumable_upload_v1_make_block/api.go (about)

     1  // THIS FILE IS GENERATED BY api-generator, DO NOT EDIT DIRECTLY!
     2  
     3  // 为后续分片上传创建一个新的块,同时上传第一片数据
     4  package resumable_upload_v1_make_block
     5  
     6  import (
     7  	"encoding/json"
     8  
     9  	io "github.com/qiniu/go-sdk/v7/internal/io"
    10  	errors "github.com/qiniu/go-sdk/v7/storagev2/errors"
    11  	uptoken "github.com/qiniu/go-sdk/v7/storagev2/uptoken"
    12  )
    13  
    14  // 调用 API 所用的请求
    15  type Request struct {
    16  	BlockSize int64             // 块大小,单位为字节,每块均为 4 MB,最后一块大小不超过 4 MB
    17  	UpToken   uptoken.Provider  // 上传凭证,如果为空,则使用 HTTPClientOptions 中的 UpToken
    18  	Body      io.ReadSeekCloser // 请求体
    19  }
    20  
    21  // 获取 API 所用的响应
    22  type Response struct {
    23  	Ctx       string // 本次上传成功后的块级上传控制信息,用于后续上传片(bput)及创建文件(mkfile)
    24  	Checksum  string // 上传块 SHA1 值,使用 URL 安全的 Base64 编码
    25  	Crc32     int64  // 上传块 CRC32 值,客户可通过此字段对上传块的完整性进行校验
    26  	Offset    int64  // 下一个上传块在切割块中的偏移
    27  	Host      string // 后续上传接收地址
    28  	ExpiredAt int64  // `ctx` 过期时间
    29  }
    30  
    31  // 返回下一片数据的上传信息
    32  type (
    33  	NewBlockInfo = Response
    34  	jsonResponse struct {
    35  		Ctx       string `json:"ctx"`        // 本次上传成功后的块级上传控制信息,用于后续上传片(bput)及创建文件(mkfile)
    36  		Checksum  string `json:"checksum"`   // 上传块 SHA1 值,使用 URL 安全的 Base64 编码
    37  		Crc32     int64  `json:"crc32"`      // 上传块 CRC32 值,客户可通过此字段对上传块的完整性进行校验
    38  		Offset    int64  `json:"offset"`     // 下一个上传块在切割块中的偏移
    39  		Host      string `json:"host"`       // 后续上传接收地址
    40  		ExpiredAt int64  `json:"expired_at"` // `ctx` 过期时间
    41  	}
    42  )
    43  
    44  func (j *Response) MarshalJSON() ([]byte, error) {
    45  	if err := j.validate(); err != nil {
    46  		return nil, err
    47  	}
    48  	return json.Marshal(&jsonResponse{Ctx: j.Ctx, Checksum: j.Checksum, Crc32: j.Crc32, Offset: j.Offset, Host: j.Host, ExpiredAt: j.ExpiredAt})
    49  }
    50  
    51  func (j *Response) UnmarshalJSON(data []byte) error {
    52  	var nj jsonResponse
    53  	if err := json.Unmarshal(data, &nj); err != nil {
    54  		return err
    55  	}
    56  	j.Ctx = nj.Ctx
    57  	j.Checksum = nj.Checksum
    58  	j.Crc32 = nj.Crc32
    59  	j.Offset = nj.Offset
    60  	j.Host = nj.Host
    61  	j.ExpiredAt = nj.ExpiredAt
    62  	return nil
    63  }
    64  
    65  func (j *Response) validate() error {
    66  	if j.Ctx == "" {
    67  		return errors.MissingRequiredFieldError{Name: "Ctx"}
    68  	}
    69  	if j.Checksum == "" {
    70  		return errors.MissingRequiredFieldError{Name: "Checksum"}
    71  	}
    72  	if j.Host == "" {
    73  		return errors.MissingRequiredFieldError{Name: "Host"}
    74  	}
    75  	if j.ExpiredAt == 0 {
    76  		return errors.MissingRequiredFieldError{Name: "ExpiredAt"}
    77  	}
    78  	return nil
    79  }