f11f4def43
Clean Set Up * fail * starteddb * constraint * cleantest * fixqueries * fixtests * storemimetype * buffer * tests * setup * passingtests * pdfHElloWorld * rm * test * notodos * tests * clean * testpdf
53 lines
990 B
Go
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: ¶ms.Location.Bucket,
|
|
Key: ¶ms.Location.Key,
|
|
IfMatch: ¶ms.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
|
|
}
|