Files
query-orchestration/internal/document/clean/content.go
T
Michael McGuinness f11f4def43 Merged in feature/clean (pull request #76)
Clean Set Up

* fail

* starteddb

* constraint

* cleantest

* fixqueries

* fixtests

* storemimetype

* buffer

* tests

* setup

* passingtests

* pdfHElloWorld

* rm

* test

* notodos

* tests

* clean

* testpdf
2025-02-28 13:11:53 +00:00

53 lines
990 B
Go

package documentclean
import (
"bytes"
"context"
"errors"
"io"
"github.com/aws/aws-sdk-go-v2/service/s3"
)
type Content interface {
isCorrupted(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
}