github.com/qiniu/go-sdk/v7@v7.27.0/storagev2/apis/resumable_upload_v1_bput/api.go (about) 1 // THIS FILE IS GENERATED BY api-generator, DO NOT EDIT DIRECTLY! 2 3 // 上传指定块的一片数据,具体数据量可根据现场环境调整,同一块的每片数据必须串行上传 4 package resumable_upload_v1_bput 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 Ctx string // 前一次上传返回的块级上传控制信息 17 ChunkOffset int64 // 当前片在整个块中的起始偏移 18 UpToken uptoken.Provider // 上传凭证,如果为空,则使用 HTTPClientOptions 中的 UpToken 19 Body io.ReadSeekCloser // 请求体 20 } 21 22 // 获取 API 所用的响应 23 type Response struct { 24 Ctx string // 本次上传成功后的块级上传控制信息,用于后续上传片(bput)及创建文件(mkfile) 25 Checksum string // 上传块 SHA1 值,使用 URL 安全的 Base64 编码 26 Crc32 int64 // 上传块 CRC32 值,客户可通过此字段对上传块的完整性进行校验 27 Offset int64 // 下一个上传块在切割块中的偏移 28 Host string // 后续上传接收地址 29 ExpiredAt int64 // `ctx` 过期时间 30 } 31 32 // 返回下一片数据的上传信息 33 type ( 34 ChunkInfo = Response 35 jsonResponse struct { 36 Ctx string `json:"ctx"` // 本次上传成功后的块级上传控制信息,用于后续上传片(bput)及创建文件(mkfile) 37 Checksum string `json:"checksum"` // 上传块 SHA1 值,使用 URL 安全的 Base64 编码 38 Crc32 int64 `json:"crc32"` // 上传块 CRC32 值,客户可通过此字段对上传块的完整性进行校验 39 Offset int64 `json:"offset"` // 下一个上传块在切割块中的偏移 40 Host string `json:"host"` // 后续上传接收地址 41 ExpiredAt int64 `json:"expired_at"` // `ctx` 过期时间 42 } 43 ) 44 45 func (j *Response) MarshalJSON() ([]byte, error) { 46 if err := j.validate(); err != nil { 47 return nil, err 48 } 49 return json.Marshal(&jsonResponse{Ctx: j.Ctx, Checksum: j.Checksum, Crc32: j.Crc32, Offset: j.Offset, Host: j.Host, ExpiredAt: j.ExpiredAt}) 50 } 51 52 func (j *Response) UnmarshalJSON(data []byte) error { 53 var nj jsonResponse 54 if err := json.Unmarshal(data, &nj); err != nil { 55 return err 56 } 57 j.Ctx = nj.Ctx 58 j.Checksum = nj.Checksum 59 j.Crc32 = nj.Crc32 60 j.Offset = nj.Offset 61 j.Host = nj.Host 62 j.ExpiredAt = nj.ExpiredAt 63 return nil 64 } 65 66 func (j *Response) validate() error { 67 if j.Ctx == "" { 68 return errors.MissingRequiredFieldError{Name: "Ctx"} 69 } 70 if j.Checksum == "" { 71 return errors.MissingRequiredFieldError{Name: "Checksum"} 72 } 73 if j.Host == "" { 74 return errors.MissingRequiredFieldError{Name: "Host"} 75 } 76 if j.ExpiredAt == 0 { 77 return errors.MissingRequiredFieldError{Name: "ExpiredAt"} 78 } 79 return nil 80 }