72 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Go
		
	
	
	
/*
 | 
						|
 * Copyright 2025 coze-dev Authors
 | 
						|
 *
 | 
						|
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
						|
 * you may not use this file except in compliance with the License.
 | 
						|
 * You may obtain a copy of the License at
 | 
						|
 *
 | 
						|
 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
 *
 | 
						|
 * Unless required by applicable law or agreed to in writing, software
 | 
						|
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
						|
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
						|
 * See the License for the specific language governing permissions and
 | 
						|
 * limitations under the License.
 | 
						|
 */
 | 
						|
 | 
						|
package imagex
 | 
						|
 | 
						|
import (
 | 
						|
	"context"
 | 
						|
	"time"
 | 
						|
)
 | 
						|
 | 
						|
//go:generate mockgen -destination ../../../internal/mock/infra/contract/imagex/imagex_mock.go --package imagex -source imagex.go
 | 
						|
type ImageX interface {
 | 
						|
	GetUploadAuth(ctx context.Context, opt ...UploadAuthOpt) (*SecurityToken, error)
 | 
						|
	GetUploadAuthWithExpire(ctx context.Context, expire time.Duration, opt ...UploadAuthOpt) (*SecurityToken, error)
 | 
						|
	GetResourceURL(ctx context.Context, uri string, opts ...GetResourceOpt) (*ResourceURL, error)
 | 
						|
	Upload(ctx context.Context, data []byte, opts ...UploadAuthOpt) (*UploadResult, error)
 | 
						|
	GetServerID() string
 | 
						|
	GetUploadHost(ctx context.Context) string
 | 
						|
}
 | 
						|
 | 
						|
type SecurityToken struct {
 | 
						|
	AccessKeyID     string `thrift:"access_key_id,1" frugal:"1,default,string" json:"access_key_id"`
 | 
						|
	SecretAccessKey string `thrift:"secret_access_key,2" frugal:"2,default,string" json:"secret_access_key"`
 | 
						|
	SessionToken    string `thrift:"session_token,3" frugal:"3,default,string" json:"session_token"`
 | 
						|
	ExpiredTime     string `thrift:"expired_time,4" frugal:"4,default,string" json:"expired_time"`
 | 
						|
	CurrentTime     string `thrift:"current_time,5" frugal:"5,default,string" json:"current_time"`
 | 
						|
	HostScheme      string `thrift:"host_scheme,6" frugal:"6,default,string" json:"host_scheme"`
 | 
						|
}
 | 
						|
 | 
						|
type ResourceURL struct {
 | 
						|
	// REQUIRED; 结果图访问精简地址,与默认地址相比缺少 Bucket 部分。
 | 
						|
	CompactURL string `json:"CompactURL"`
 | 
						|
	// REQUIRED; 结果图访问默认地址。
 | 
						|
	URL string `json:"URL"`
 | 
						|
}
 | 
						|
 | 
						|
type UploadResult struct {
 | 
						|
	Result    *Result   `json:"Results"`
 | 
						|
	RequestId string    `json:"RequestId"`
 | 
						|
	FileInfo  *FileInfo `json:"PluginResult"`
 | 
						|
}
 | 
						|
 | 
						|
type Result struct {
 | 
						|
	Uri       string `json:"Uri"`
 | 
						|
	UriStatus int    `json:"UriStatus"` // 2000表示上传成功
 | 
						|
}
 | 
						|
 | 
						|
type FileInfo struct {
 | 
						|
	Name        string `json:"FileName"`
 | 
						|
	Uri         string `json:"ImageUri"`
 | 
						|
	ImageWidth  int    `json:"ImageWidth"`
 | 
						|
	ImageHeight int    `json:"ImageHeight"`
 | 
						|
	Md5         string `json:"ImageMd5"`
 | 
						|
	ImageFormat string `json:"ImageFormat"`
 | 
						|
	ImageSize   int    `json:"ImageSize"`
 | 
						|
	FrameCnt    int    `json:"FrameCnt"`
 | 
						|
	Duration    int    `json:"Duration"`
 | 
						|
}
 |