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  }