upload

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 19, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type DocumentConfig

type DocumentConfig struct {
	EnableOCR        bool     `json:"enable_ocr"`
	EnablePreview    bool     `json:"enable_preview"`
	SupportedFormats []string `json:"supported_formats"`
}

DocumentConfig represents document processing configuration

type File

type File struct {
	ID           string            `json:"id"`
	Filename     string            `json:"filename"`
	OriginalName string            `json:"original_name"`
	Size         int64             `json:"size"`
	MimeType     string            `json:"mime_type"`
	Extension    string            `json:"extension"`
	Path         string            `json:"path"`
	URL          string            `json:"url"`
	Hash         string            `json:"hash"`
	UploadedBy   string            `json:"uploaded_by"`
	TenantID     string            `json:"tenant_id"`
	IsPublic     bool              `json:"is_public"`
	Metadata     map[string]string `json:"metadata"`
	CreatedAt    time.Time         `json:"created_at"`
	UpdatedAt    time.Time         `json:"updated_at"`
}

File represents an uploaded file

type FileProcessor

type FileProcessor struct {
	// contains filtered or unexported fields
}

FileProcessor implements media processing

func NewFileProcessor

func NewFileProcessor(logger Logger) *FileProcessor

NewFileProcessor creates a new file processor

func (*FileProcessor) GenerateThumbnail

func (fp *FileProcessor) GenerateThumbnail(ctx context.Context, file *File) error

GenerateThumbnail generates thumbnail for media files

func (*FileProcessor) ProcessDocument

func (fp *FileProcessor) ProcessDocument(ctx context.Context, file *File, config *DocumentConfig) error

ProcessDocument processes document files

func (*FileProcessor) ProcessImage

func (fp *FileProcessor) ProcessImage(ctx context.Context, file *File, config *ImageConfig) error

ProcessImage processes image files

func (*FileProcessor) ProcessVideo

func (fp *FileProcessor) ProcessVideo(ctx context.Context, file *File, config *VideoConfig) error

ProcessVideo processes video files

type FileSystemStorage

type FileSystemStorage struct {
	// contains filtered or unexported fields
}

FileSystemStorage implements file system storage

func NewFileSystemStorage

func NewFileSystemStorage(basePath, publicURL string, logger Logger) *FileSystemStorage

NewFileSystemStorage creates new file system storage

func (*FileSystemStorage) Delete

func (fs *FileSystemStorage) Delete(ctx context.Context, id string) error

Delete deletes file

func (*FileSystemStorage) Get

func (fs *FileSystemStorage) Get(ctx context.Context, id string) (*File, error)

Get retrieves file metadata

func (*FileSystemStorage) GetContent

func (fs *FileSystemStorage) GetContent(ctx context.Context, path string) (io.ReadCloser, error)

GetContent returns file content

func (*FileSystemStorage) GetURL

func (fs *FileSystemStorage) GetURL(ctx context.Context, path string) (string, error)

GetURL returns file URL

func (*FileSystemStorage) List

func (fs *FileSystemStorage) List(ctx context.Context, userID, tenantID string) ([]*File, error)

List files

func (*FileSystemStorage) Store

func (fs *FileSystemStorage) Store(ctx context.Context, file *File, content io.Reader) error

Store stores file in file system

func (*FileSystemStorage) UpdateMetadata

func (fs *FileSystemStorage) UpdateMetadata(ctx context.Context, id string, metadata map[string]string) error

UpdateMetadata updates file metadata

type ImageConfig

type ImageConfig struct {
	EnableResize    bool     `json:"enable_resize"`
	EnableThumbnail bool     `json:"enable_thumbnail"`
	MaxWidth        int      `json:"max_width"`
	MaxHeight       int      `json:"max_height"`
	ThumbnailSize   int      `json:"thumbnail_size"`
	Quality         int      `json:"quality"`
	Formats         []string `json:"formats"`
}

ImageConfig represents image processing configuration

type Logger

type Logger interface {
	Info(msg string, fields ...interface{})
	Error(msg string, fields ...interface{})
	Warn(msg string, fields ...interface{})
	Debug(msg string, fields ...interface{})
}

Logger interface for logging

type Manager

type Manager struct {
	// contains filtered or unexported fields
}

Manager manages file uploads

func NewManager

func NewManager(storage Storage, processor Processor, logger Logger, config UploadConfig) *Manager

NewManager creates a new upload manager

func (*Manager) DeleteFile

func (m *Manager) DeleteFile(ctx context.Context, id string) error

DeleteFile deletes a file

func (*Manager) GetFile

func (m *Manager) GetFile(ctx context.Context, id string) (*File, error)

GetFile retrieves a file by ID

func (*Manager) GetFileContent

func (m *Manager) GetFileContent(ctx context.Context, id string) (io.ReadCloser, error)

GetFileContent returns file content

func (*Manager) ListFiles

func (m *Manager) ListFiles(ctx context.Context, userID, tenantID string) ([]*File, error)

ListFiles returns files for a user or tenant

func (*Manager) UpdateFileMetadata

func (m *Manager) UpdateFileMetadata(ctx context.Context, id string, metadata map[string]string) error

UpdateFileMetadata updates file metadata

func (*Manager) UploadFile

func (m *Manager) UploadFile(ctx context.Context, header *multipart.FileHeader, uploadedBy, tenantID string, isPublic bool) (*File, error)

UploadFile handles file upload

type Processor

type Processor interface {
	ProcessImage(ctx context.Context, file *File, config *ImageConfig) error
	ProcessVideo(ctx context.Context, file *File, config *VideoConfig) error
	ProcessDocument(ctx context.Context, file *File, config *DocumentConfig) error
	GenerateThumbnail(ctx context.Context, file *File) error
}

Processor interface for media processing

type Storage

type Storage interface {
	// File operations
	Store(ctx context.Context, file *File, content io.Reader) error
	Get(ctx context.Context, id string) (*File, error)
	Delete(ctx context.Context, id string) error
	List(ctx context.Context, userID, tenantID string) ([]*File, error)

	// Content operations
	GetContent(ctx context.Context, path string) (io.ReadCloser, error)
	GetURL(ctx context.Context, path string) (string, error)

	// Metadata operations
	UpdateMetadata(ctx context.Context, id string, metadata map[string]string) error
}

Storage interface for file storage

type UploadConfig

type UploadConfig struct {
	MaxFileSize      int64           `json:"max_file_size"`
	AllowedTypes     []string        `json:"allowed_types"`
	AllowedExts      []string        `json:"allowed_extensions"`
	StoragePath      string          `json:"storage_path"`
	PublicURL        string          `json:"public_url"`
	EnableProcessing bool            `json:"enable_processing"`
	ImageConfig      *ImageConfig    `json:"image_config"`
	VideoConfig      *VideoConfig    `json:"video_config"`
	DocumentConfig   *DocumentConfig `json:"document_config"`
}

UploadConfig represents upload configuration

type VideoConfig

type VideoConfig struct {
	EnableTranscoding bool     `json:"enable_transcoding"`
	MaxResolution     string   `json:"max_resolution"`
	Formats           []string `json:"formats"`
	ThumbnailTime     float64  `json:"thumbnail_time"`
}

VideoConfig represents video processing configuration

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL