Merged in feature/doc_import (pull request #177)

integration of background processor

* integration part 1

* feature working

* fix mimetype issue
This commit is contained in:
Jay Brown
2025-08-20 19:01:13 +00:00
parent 7a693d42f5
commit 720a84be92
34 changed files with 2682 additions and 193 deletions
+19 -3
View File
@@ -5,6 +5,7 @@ import (
"context"
"fmt"
"io"
"mime"
"path/filepath"
"time"
@@ -28,6 +29,17 @@ func New(cfg objectstore.ConfigProvider) *Service {
return &Service{cfg: cfg}
}
// detectContentType determines the MIME type based on file extension
func detectContentType(filename string) string {
// Use Go's standard library to detect MIME type from extension
contentType := mime.TypeByExtension(filepath.Ext(filename))
if contentType == "" {
// Default to binary if extension is unknown
return "application/octet-stream"
}
return contentType
}
// StoreZIPFile uploads ZIP file to S3 and returns storage metadata
func (s *Service) StoreZIPFile(ctx context.Context, clientID string, filename string, content io.Reader) (*StorageResult, error) {
// Create unique S3 key with timestamp and UUID
@@ -45,11 +57,15 @@ func (s *Service) StoreZIPFile(ctx context.Context, clientID string, filename st
return nil, fmt.Errorf("failed to read file content: %w", err)
}
// Detect content type from filename
contentType := detectContentType(filename)
// Upload to S3 using the store client
_, err = s.cfg.GetStoreClient().PutObject(ctx, &s3.PutObjectInput{
Bucket: &bucketName,
Key: &key,
Body: bytes.NewReader(buf.Bytes()),
Bucket: &bucketName,
Key: &key,
Body: bytes.NewReader(buf.Bytes()),
ContentType: &contentType,
})
if err != nil {
return nil, fmt.Errorf("failed to upload ZIP to S3: %w", err)