oss/types.go (135 lines of code) (raw):

package oss import ( "context" "io" "net/http" ) type OperationMetadata struct { values map[any][]any } func (m OperationMetadata) Get(key any) any { if m.values == nil { return nil } v := m.values[key] if len(v) == 0 { return nil } return v[0] } func (m OperationMetadata) Values(key any) []any { if m.values == nil { return nil } return m.values[key] } func (m *OperationMetadata) Add(key, value any) { if m.values == nil { m.values = map[any][]any{} } m.values[key] = append(m.values[key], value) } func (m *OperationMetadata) Set(key, value any) { if m.values == nil { m.values = map[any][]any{} } m.values[key] = []any{value} } func (m OperationMetadata) Has(key any) bool { if m.values == nil { return false } _, ok := m.values[key] return ok } func (m OperationMetadata) Clone() OperationMetadata { vs := make(map[any][]any, len(m.values)) for k, v := range m.values { vv := make([]any, len(v)) copy(vv, v) vs[k] = vv } return OperationMetadata{ values: vs, } } type RequestCommon struct { Headers map[string]string Parameters map[string]string Payload io.Reader } type RequestCommonInterface interface { GetCommonFileds() (map[string]string, map[string]string, io.Reader) } func (r *RequestCommon) GetCommonFileds() (map[string]string, map[string]string, io.Reader) { return r.Headers, r.Parameters, r.Payload } type ResultCommon struct { Status string StatusCode int Headers http.Header OpMetadata OperationMetadata } type ResultCommonInterface interface { CopyIn(status string, statusCode int, headers http.Header, meta OperationMetadata) } func (r *ResultCommon) CopyIn(status string, statusCode int, headers http.Header, meta OperationMetadata) { r.Status = status r.StatusCode = statusCode r.Headers = headers r.OpMetadata = meta } type OperationInput struct { OpName string Method string Headers map[string]string Parameters map[string]string Body io.Reader Bucket *string Key *string OpMetadata OperationMetadata } type OperationOutput struct { Input *OperationInput Status string StatusCode int Headers http.Header Body io.ReadCloser OpMetadata OperationMetadata httpRequest *http.Request } type RequestBodyTracker interface { io.Writer Reset() } type DownloadAPIClient interface { HeadObject(ctx context.Context, request *HeadObjectRequest, optFns ...func(*Options)) (*HeadObjectResult, error) GetObject(ctx context.Context, request *GetObjectRequest, optFns ...func(*Options)) (*GetObjectResult, error) } type UploadAPIClient interface { HeadObject(ctx context.Context, request *HeadObjectRequest, optFns ...func(*Options)) (*HeadObjectResult, error) PutObject(ctx context.Context, request *PutObjectRequest, optFns ...func(*Options)) (*PutObjectResult, error) InitiateMultipartUpload(ctx context.Context, request *InitiateMultipartUploadRequest, optFns ...func(*Options)) (*InitiateMultipartUploadResult, error) UploadPart(ctx context.Context, request *UploadPartRequest, optFns ...func(*Options)) (*UploadPartResult, error) CompleteMultipartUpload(ctx context.Context, request *CompleteMultipartUploadRequest, optFns ...func(*Options)) (*CompleteMultipartUploadResult, error) AbortMultipartUpload(ctx context.Context, request *AbortMultipartUploadRequest, optFns ...func(*Options)) (*AbortMultipartUploadResult, error) ListParts(ctx context.Context, request *ListPartsRequest, optFns ...func(*Options)) (*ListPartsResult, error) } type OpenFileAPIClient interface { HeadObject(ctx context.Context, request *HeadObjectRequest, optFns ...func(*Options)) (*HeadObjectResult, error) GetObject(ctx context.Context, request *GetObjectRequest, optFns ...func(*Options)) (*GetObjectResult, error) } type AppendFileAPIClient interface { HeadObject(ctx context.Context, request *HeadObjectRequest, optFns ...func(*Options)) (*HeadObjectResult, error) AppendObject(ctx context.Context, request *AppendObjectRequest, optFns ...func(*Options)) (*AppendObjectResult, error) } type CopyAPIClient interface { HeadObject(ctx context.Context, request *HeadObjectRequest, optFns ...func(*Options)) (*HeadObjectResult, error) CopyObject(ctx context.Context, request *CopyObjectRequest, optFns ...func(*Options)) (*CopyObjectResult, error) InitiateMultipartUpload(ctx context.Context, request *InitiateMultipartUploadRequest, optFns ...func(*Options)) (*InitiateMultipartUploadResult, error) UploadPartCopy(ctx context.Context, request *UploadPartCopyRequest, optFns ...func(*Options)) (*UploadPartCopyResult, error) CompleteMultipartUpload(ctx context.Context, request *CompleteMultipartUploadRequest, optFns ...func(*Options)) (*CompleteMultipartUploadResult, error) AbortMultipartUpload(ctx context.Context, request *AbortMultipartUploadRequest, optFns ...func(*Options)) (*AbortMultipartUploadResult, error) ListParts(ctx context.Context, request *ListPartsRequest, optFns ...func(*Options)) (*ListPartsResult, error) GetObjectTagging(ctx context.Context, request *GetObjectTaggingRequest, optFns ...func(*Options)) (*GetObjectTaggingResult, error) }