Versions in this module Expand all Collapse all v1 v1.0.5 Jul 13, 2025 Changes in this version + const CDNURL + const MultipartChunkSize + const MultipartMaxConcurrency + const MultipartThreshold + const RestAPIURL + const UserAgent + var ErrCreateUpload = fmt.Errorf("create upload failed") + var ErrRefreshTokenFailed = errors.New("refresh token failed") + var ErrTokenExpired = errors.New("token expired") + var ErrTokenNotFound = errors.New("token not found") + var ErrUploadComplete = fmt.Errorf("upload complete failed") + var ErrUploadFile = fmt.Errorf("upload file failed") + var ErrUploadPart = fmt.Errorf("upload part failed") + var FileUploadURL = fmt.Sprintf("%s/files/upload", CDNURL) + var TokenStoreURL = fmt.Sprintf("%s/storage/auth/token?storage_type=fal-cdn-v3", RestAPIURL) + type CompleteUploadRequest struct + Parts []UploadPart + type CreateUploadResult struct + AccessURL string + UploadID string + UploadSignature string + type MemoryTokenStore struct + func (s *MemoryTokenStore) Get(ctx context.Context, token *Token) error + func (s *MemoryTokenStore) Set(ctx context.Context, token *Token) error + type Option func(*Uploader) + func WithChunkSize(size int64) Option + func WithHTTPClient(clt *http.Client) Option + func WithThreads(n int) Option + type Token struct + BaseURL string + CreatedAt TokenTime + ExpireAt TokenTime + Token string + TokenType string + func (t Token) Expired() bool + type TokenManager struct + func NewTokenManager(key string, store TokenStore) *TokenManager + func (m *TokenManager) Refresh(ctx context.Context, token *Token) error + func (m *TokenManager) SetHTTPClient(clt *http.Client) + func (m *TokenManager) Token(ctx context.Context, token *Token) error + type TokenStore interface + Get func(context.Context, *Token) error + Set func(context.Context, *Token) error + type TokenTime time.Time + func (t *TokenTime) UnmarshalJSON(b []byte) error + func (t TokenTime) IsZero() bool + func (t TokenTime) MarshalJSON() ([]byte, error) + func (t TokenTime) String() string + func (t TokenTime) Time() time.Time + type UploadPart struct + ETag string + PartNumber int + type UploadPartRequest struct + ContentType string + PartNumber int + Reader io.Reader + type UploadRequest struct + ContentType string + Filename string + Reader io.Reader + type Uploader struct + func NewUploader(key string, store TokenStore, opts ...Option) *Uploader + func (u *Uploader) Upload(ctx context.Context, req *UploadRequest) (string, error)