github.com/qiniu/go-sdk/v7@v7.27.0/storagev2/apis/create_share/api.go (about) 1 // THIS FILE IS GENERATED BY api-generator, DO NOT EDIT DIRECTLY! 2 3 // 创建目录分享 4 package create_share 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 Credentials credentials.CredentialsProvider // 鉴权参数,用于生成鉴权凭证,如果为空,则使用 HTTPClientOptions 中的 CredentialsProvider 16 Bucket string // 分享的空间名称 17 Prefix string // 分享的对象名称前缀 18 DurationSeconds int64 // 分享过期时间,单位为秒,最小 900 秒,最长 7200 秒 19 ExtractCode string // 提取码,必须给出 6 个字符,仅大小写字母和数字 20 Permission string // 权限,目前仅支持 READONLY,未来会支持 READWRITE 21 } 22 23 // 新创建的分享参数 24 type ( 25 NewShareParams = Request 26 jsonRequest struct { 27 Bucket string `json:"bucket"` // 分享的空间名称 28 Prefix string `json:"prefix"` // 分享的对象名称前缀 29 DurationSeconds int64 `json:"duration_seconds"` // 分享过期时间,单位为秒,最小 900 秒,最长 7200 秒 30 ExtractCode string `json:"extract_code"` // 提取码,必须给出 6 个字符,仅大小写字母和数字 31 Permission string `json:"permission"` // 权限,目前仅支持 READONLY,未来会支持 READWRITE 32 } 33 ) 34 35 func (j *Request) MarshalJSON() ([]byte, error) { 36 if err := j.validate(); err != nil { 37 return nil, err 38 } 39 return json.Marshal(&jsonRequest{Bucket: j.Bucket, Prefix: j.Prefix, DurationSeconds: j.DurationSeconds, ExtractCode: j.ExtractCode, Permission: j.Permission}) 40 } 41 42 func (j *Request) UnmarshalJSON(data []byte) error { 43 var nj jsonRequest 44 if err := json.Unmarshal(data, &nj); err != nil { 45 return err 46 } 47 j.Bucket = nj.Bucket 48 j.Prefix = nj.Prefix 49 j.DurationSeconds = nj.DurationSeconds 50 j.ExtractCode = nj.ExtractCode 51 j.Permission = nj.Permission 52 return nil 53 } 54 55 func (j *Request) validate() error { 56 if j.Bucket == "" { 57 return errors.MissingRequiredFieldError{Name: "Bucket"} 58 } 59 if j.Prefix == "" { 60 return errors.MissingRequiredFieldError{Name: "Prefix"} 61 } 62 if j.DurationSeconds == 0 { 63 return errors.MissingRequiredFieldError{Name: "DurationSeconds"} 64 } 65 if j.ExtractCode == "" { 66 return errors.MissingRequiredFieldError{Name: "ExtractCode"} 67 } 68 if j.Permission == "" { 69 return errors.MissingRequiredFieldError{Name: "Permission"} 70 } 71 return nil 72 } 73 74 // 获取 API 所用的响应 75 type Response struct { 76 Id string // 分享 ID 77 Token string // 分享 Token 78 Expires string // 分享过期时间,遵循 ISO8601 风格,使用 UTC 0 时区时间 79 } 80 81 // 返回的分享信息 82 type ( 83 NewShareInfo = Response 84 jsonResponse struct { 85 Id string `json:"id"` // 分享 ID 86 Token string `json:"token"` // 分享 Token 87 Expires string `json:"expires"` // 分享过期时间,遵循 ISO8601 风格,使用 UTC 0 时区时间 88 } 89 ) 90 91 func (j *Response) MarshalJSON() ([]byte, error) { 92 if err := j.validate(); err != nil { 93 return nil, err 94 } 95 return json.Marshal(&jsonResponse{Id: j.Id, Token: j.Token, Expires: j.Expires}) 96 } 97 98 func (j *Response) UnmarshalJSON(data []byte) error { 99 var nj jsonResponse 100 if err := json.Unmarshal(data, &nj); err != nil { 101 return err 102 } 103 j.Id = nj.Id 104 j.Token = nj.Token 105 j.Expires = nj.Expires 106 return nil 107 } 108 109 func (j *Response) validate() error { 110 if j.Id == "" { 111 return errors.MissingRequiredFieldError{Name: "Id"} 112 } 113 if j.Token == "" { 114 return errors.MissingRequiredFieldError{Name: "Token"} 115 } 116 if j.Expires == "" { 117 return errors.MissingRequiredFieldError{Name: "Expires"} 118 } 119 return nil 120 }