Documentation
¶
Index ¶
- func IsOfficeFile(header []byte) bool
- func IsPDF(header []byte) bool
- func IsWebFile(header []byte, filename ...string) bool
- func IsZip(header []byte) bool
- type BaseScanner
- type BinaryScanner
- type ChunkProcessor
- type CopyConfig
- type CopyPriority
- type CopyPriorityRule
- type CopyStatus
- type FileContentCache
- type FileScanner
- type FileType
- type OfficeScanner
- type PDFScanner
- type Pattern
- type PatternPriority
- type ProcessorConfig
- type ScanConfig
- type ScanResult
- type Scanner
- type ScannerCache
- type WebScanner
- type ZipScanner
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func IsOfficeFile ¶
IsOfficeFile verifica se o arquivo é um documento Office
Types ¶
type BaseScanner ¶
type BaseScanner struct {
// contains filtered or unexported fields
}
BaseScanner implementação base para todos os scanners
func NewBaseScanner ¶
func NewBaseScanner(config *ScanConfig) (*BaseScanner, error)
NewBaseScanner cria nova instância do scanner base
func (*BaseScanner) AddPattern ¶
func (s *BaseScanner) AddPattern(pattern Pattern)
AddPattern adiciona novo padrão ao scanner
func (*BaseScanner) Scan ¶
func (s *BaseScanner) Scan(ctx context.Context, file *os.File, config *ScanConfig) <-chan ScanResult
Scan implementa o scanner assíncrono
func (*BaseScanner) SetCopyPriority ¶
func (s *BaseScanner) SetCopyPriority(priority CopyPriority)
SetCopyPriority configura prioridade de cópia
type BinaryScanner ¶
type BinaryScanner struct {
// contains filtered or unexported fields
}
type ChunkProcessor ¶
type ChunkProcessor struct {
// contains filtered or unexported fields
}
ChunkProcessor gerencia o processamento de chunks de arquivo
func NewChunkProcessor ¶
func NewChunkProcessor(config *ProcessorConfig) *ChunkProcessor
NewChunkProcessor cria nova instância do processador de chunks
func (*ChunkProcessor) ProcessFile ¶
ProcessFile processa o arquivo em chunks
func (*ChunkProcessor) ValidateConfig ¶
func (p *ChunkProcessor) ValidateConfig() error
ValidateConfig valida a configuração do processador
type CopyConfig ¶
type CopyConfig struct {
DefaultPriority PatternPriority
PriorityRules []CopyPriorityRule
OutputDir string
PreservePath bool
}
CopyConfig configuração específica para cópia
type CopyPriority ¶
type CopyPriority struct {
Level PatternPriority
Immediate bool // Se true, copia imediatamente ao encontrar match
MaxSize int64 // Tamanho máximo em bytes para esta prioridade
}
CopyPriority define os níveis de prioridade para cópia de arquivos
type CopyPriorityRule ¶
type CopyPriorityRule struct {
Pattern string
Priority PatternPriority
Immediate bool
MaxSize int64
}
CopyPriorityRule regra para determinar prioridade de cópia
type CopyStatus ¶
type CopyStatus struct {
ShouldCopy bool
Priority PatternPriority
Immediate bool
}
CopyStatus status da cópia do arquivo
type FileContentCache ¶
type FileContentCache struct {
// contains filtered or unexported fields
}
FileContentCache armazena conteúdo de arquivos lidos frequentemente O valor pode ser []byte (header, chunk ou arquivo inteiro)
func NewFileContentCache ¶
func NewFileContentCache(size int) (*FileContentCache, error)
NewFileContentCache cria um novo cache LRU para arquivos
func (*FileContentCache) Get ¶
func (c *FileContentCache) Get(key string) ([]byte, bool)
Get retorna o conteúdo do arquivo se estiver no cache
func (*FileContentCache) Set ¶
func (c *FileContentCache) Set(key string, data []byte)
Set armazena o conteúdo do arquivo no cache
type FileScanner ¶
FileScanner interface para processamento de arquivos
func NewBinaryScanner ¶
func NewBinaryScanner(reader io.ReadCloser, minLen int) FileScanner
func NewOfficeScanner ¶
func NewOfficeScanner(reader io.ReadCloser) FileScanner
NewOfficeScanner cria um novo scanner para arquivos Office
func NewPDFScanner ¶
func NewPDFScanner(reader io.ReadCloser) FileScanner
NewPDFScanner cria um novo scanner para arquivos PDF
func NewWebScanner ¶
func NewWebScanner(reader io.ReadCloser) FileScanner
NewWebScanner cria um novo scanner para arquivos web
func NewZipScanner ¶
func NewZipScanner(reader io.ReadCloser) FileScanner
NewZipScanner cria um novo scanner para arquivos ZIP
type OfficeScanner ¶
type OfficeScanner struct {
// contains filtered or unexported fields
}
OfficeScanner implementa o scanner para arquivos Office (DOCX, XLSX, PPTX)
type PDFScanner ¶
type PDFScanner struct {
// contains filtered or unexported fields
}
PDFScanner implementa o scanner para arquivos PDF
type Pattern ¶
type Pattern struct {
Value string
Type string // regex, text, binary
Priority PatternPriority
}
Pattern define um padrão de busca
type PatternPriority ¶
type PatternPriority int
PatternPriority define os níveis de prioridade para padrões e cópia
const ( PriorityLow PatternPriority = iota PriorityMedium PriorityHigh PriorityCritical )
type ProcessorConfig ¶
type ProcessorConfig struct {
ChunkSize int
MaxChunks int
UseMemMap bool
BufferPool *sync.Pool
ReadTimeout time.Duration
}
ProcessorConfig configuração para o processador de chunks
type ScanConfig ¶
type ScanConfig struct {
ChunkSize int
MaxChunks int
UseMemMap bool
Patterns []Pattern
BufferPool *sync.Pool
ReadTimeout time.Duration
CopyConfig *CopyConfig
}
ScanConfig configuração para o scanner
type ScanResult ¶
type ScanResult struct {
Content string
LineNumber int
MatchType string
Pattern string
Priority PatternPriority
CopyStatus CopyStatus
Error error
}
ScanResult resultado do scan
type Scanner ¶
type Scanner interface {
Scan(ctx context.Context, file *os.File, config *ScanConfig) <-chan ScanResult
AddPattern(pattern Pattern)
SetCopyPriority(priority CopyPriority)
}
Scanner interface principal para todos os scanners
type ScannerCache ¶
type ScannerCache struct {
// contains filtered or unexported fields
}
ScannerCache implementa cache para padrões compilados
func NewScannerCache ¶
func NewScannerCache(size int) (*ScannerCache, error)
NewScannerCache cria nova instância do cache
func (*ScannerCache) GetPattern ¶
func (c *ScannerCache) GetPattern(pattern string) *regexp.Regexp
GetPattern retorna padrão compilado do cache
type WebScanner ¶
type WebScanner struct {
// contains filtered or unexported fields
}
WebScanner implementa o scanner para arquivos web (HTML, JS, CSS)
type ZipScanner ¶
type ZipScanner struct {
// contains filtered or unexported fields
}
ZipScanner implementa o scanner para arquivos ZIP