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

     1  // THIS FILE IS GENERATED BY api-generator, DO NOT EDIT DIRECTLY!
     2  
     3  // 仅获取对象的元信息,不返回对象的内容
     4  package stat_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  	Entry       string                          // 指定目标对象空间与目标对象名称,格式为 <目标对象空间>:<目标对象名称>
    16  	NeedParts   bool                            // 如果文件是通过分片上传的,是否返回对应的分片信息
    17  	Credentials credentials.CredentialsProvider // 鉴权参数,用于生成鉴权凭证,如果为空,则使用 HTTPClientOptions 中的 CredentialsProvider
    18  }
    19  
    20  // 获取 API 所用的响应
    21  type Response struct {
    22  	Size                        int64             // 对象大小,单位为字节
    23  	Hash                        string            // 对象哈希值
    24  	MimeType                    string            // 对象 MIME 类型
    25  	Type                        int64             // 对象存储类型,`0` 表示普通存储,`1` 表示低频存储,`2` 表示归档存储
    26  	PutTime                     int64             // 文件上传时间,UNIX 时间戳格式,单位为 100 纳秒
    27  	EndUser                     string            // 资源内容的唯一属主标识
    28  	RestoringStatus             int64             // 归档存储文件的解冻状态,`2` 表示解冻完成,`1` 表示解冻中;归档文件冻结时,不返回该字段
    29  	Status                      int64             // 文件状态。`1` 表示禁用;只有禁用状态的文件才会返回该字段
    30  	Md5                         string            // 对象 MD5 值,只有通过直传文件和追加文件 API 上传的文件,服务端确保有该字段返回
    31  	ExpirationTime              int64             // 文件过期删除日期,UNIX 时间戳格式,文件在设置过期时间后才会返回该字段
    32  	TransitionToIaTime          int64             // 文件生命周期中转为低频存储的日期,UNIX 时间戳格式,文件在设置转低频后才会返回该字段
    33  	TransitionToArchiveTime     int64             // 文件生命周期中转为归档存储的日期,UNIX 时间戳格式,文件在设置转归档后才会返回该字段
    34  	TransitionToDeepArchiveTime int64             // 文件生命周期中转为深度归档存储的日期,UNIX 时间戳格式,文件在设置转归档后才会返回该字段
    35  	TransitionToArchiveIrTime   int64             // 文件生命周期中转为归档直读存储的日期,UNIX 时间戳格式,文件在设置转归档直读后才会返回该字段
    36  	Metadata                    map[string]string // 对象存储元信息
    37  	Parts                       PartSizes         // 每个分片的大小,如没有指定 need_parts 参数则不返回
    38  }
    39  
    40  // 每个分片的大小
    41  type PartSizes = []int64
    42  
    43  // 文件元信息
    44  type (
    45  	ObjectMetadata = Response
    46  	jsonResponse   struct {
    47  		Size                        int64             `json:"fsize,omitempty"`                   // 对象大小,单位为字节
    48  		Hash                        string            `json:"hash"`                              // 对象哈希值
    49  		MimeType                    string            `json:"mimeType"`                          // 对象 MIME 类型
    50  		Type                        int64             `json:"type,omitempty"`                    // 对象存储类型,`0` 表示普通存储,`1` 表示低频存储,`2` 表示归档存储
    51  		PutTime                     int64             `json:"putTime"`                           // 文件上传时间,UNIX 时间戳格式,单位为 100 纳秒
    52  		EndUser                     string            `json:"endUser,omitempty"`                 // 资源内容的唯一属主标识
    53  		RestoringStatus             int64             `json:"restoreStatus,omitempty"`           // 归档存储文件的解冻状态,`2` 表示解冻完成,`1` 表示解冻中;归档文件冻结时,不返回该字段
    54  		Status                      int64             `json:"status,omitempty"`                  // 文件状态。`1` 表示禁用;只有禁用状态的文件才会返回该字段
    55  		Md5                         string            `json:"md5,omitempty"`                     // 对象 MD5 值,只有通过直传文件和追加文件 API 上传的文件,服务端确保有该字段返回
    56  		ExpirationTime              int64             `json:"expiration,omitempty"`              // 文件过期删除日期,UNIX 时间戳格式,文件在设置过期时间后才会返回该字段
    57  		TransitionToIaTime          int64             `json:"transitionToIA,omitempty"`          // 文件生命周期中转为低频存储的日期,UNIX 时间戳格式,文件在设置转低频后才会返回该字段
    58  		TransitionToArchiveTime     int64             `json:"transitionToARCHIVE,omitempty"`     // 文件生命周期中转为归档存储的日期,UNIX 时间戳格式,文件在设置转归档后才会返回该字段
    59  		TransitionToDeepArchiveTime int64             `json:"transitionToDeepArchive,omitempty"` // 文件生命周期中转为深度归档存储的日期,UNIX 时间戳格式,文件在设置转归档后才会返回该字段
    60  		TransitionToArchiveIrTime   int64             `json:"transitionToArchiveIR,omitempty"`   // 文件生命周期中转为归档直读存储的日期,UNIX 时间戳格式,文件在设置转归档直读后才会返回该字段
    61  		Metadata                    map[string]string `json:"x-qn-meta,omitempty"`               // 对象存储元信息
    62  		Parts                       PartSizes         `json:"parts,omitempty"`                   // 每个分片的大小,如没有指定 need_parts 参数则不返回
    63  	}
    64  )
    65  
    66  func (j *Response) MarshalJSON() ([]byte, error) {
    67  	if err := j.validate(); err != nil {
    68  		return nil, err
    69  	}
    70  	return json.Marshal(&jsonResponse{Size: j.Size, Hash: j.Hash, MimeType: j.MimeType, Type: j.Type, PutTime: j.PutTime, EndUser: j.EndUser, RestoringStatus: j.RestoringStatus, Status: j.Status, Md5: j.Md5, ExpirationTime: j.ExpirationTime, TransitionToIaTime: j.TransitionToIaTime, TransitionToArchiveTime: j.TransitionToArchiveTime, TransitionToDeepArchiveTime: j.TransitionToDeepArchiveTime, TransitionToArchiveIrTime: j.TransitionToArchiveIrTime, Metadata: j.Metadata, Parts: j.Parts})
    71  }
    72  
    73  func (j *Response) UnmarshalJSON(data []byte) error {
    74  	var nj jsonResponse
    75  	if err := json.Unmarshal(data, &nj); err != nil {
    76  		return err
    77  	}
    78  	j.Size = nj.Size
    79  	j.Hash = nj.Hash
    80  	j.MimeType = nj.MimeType
    81  	j.Type = nj.Type
    82  	j.PutTime = nj.PutTime
    83  	j.EndUser = nj.EndUser
    84  	j.RestoringStatus = nj.RestoringStatus
    85  	j.Status = nj.Status
    86  	j.Md5 = nj.Md5
    87  	j.ExpirationTime = nj.ExpirationTime
    88  	j.TransitionToIaTime = nj.TransitionToIaTime
    89  	j.TransitionToArchiveTime = nj.TransitionToArchiveTime
    90  	j.TransitionToDeepArchiveTime = nj.TransitionToDeepArchiveTime
    91  	j.TransitionToArchiveIrTime = nj.TransitionToArchiveIrTime
    92  	j.Metadata = nj.Metadata
    93  	j.Parts = nj.Parts
    94  	return nil
    95  }
    96  
    97  func (j *Response) validate() error {
    98  	if j.Hash == "" {
    99  		return errors.MissingRequiredFieldError{Name: "Hash"}
   100  	}
   101  	if j.MimeType == "" {
   102  		return errors.MissingRequiredFieldError{Name: "MimeType"}
   103  	}
   104  	if j.PutTime == 0 {
   105  		return errors.MissingRequiredFieldError{Name: "PutTime"}
   106  	}
   107  	return nil
   108  }