Files
query-orchestration/internal/document/clean/content.go
T
Michael McGuinness ae1abdb31f Merged in feature/dimensions (pull request #79)
Dimension Limits

* dims

* clean
2025-02-28 15:56:47 +00:00

53 lines
988 B
Go

package documentclean
import (
"bytes"
"context"
"errors"
"io"
"github.com/aws/aws-sdk-go-v2/service/s3"
)
type Content interface {
isCorrupt(context.Context) *InvalidDocumentReason
}
func (s *Service) getContent(ctx context.Context, params *CleanParams, mimeType MimeType) (Content, error) {
resp, err := s.cfg.GetStoreClient().GetObject(ctx, &s3.GetObjectInput{
Bucket: &params.Location.Bucket,
Key: &params.Location.Key,
IfMatch: &params.Hash,
})
if err != nil {
return nil, err
}
defer resp.Body.Close()
seek, err := ReaderToSeeker(resp.Body)
if err != nil {
return nil, err
}
var content Content
switch mimeType {
case MimeTypePDF:
content = NewPDF(seek)
default:
return nil, errors.New("invalid mimetype")
}
return content, nil
}
func ReaderToSeeker(readCloser io.ReadCloser) (io.ReadSeeker, error) {
data, err := io.ReadAll(readCloser)
if err != nil {
return nil, err
}
readCloser.Close()
return bytes.NewReader(data), nil
}