Skip to content

Commit 3bc2e22

Browse files
authored
Merge pull request #340 from jchanam/set-mime-type-s3-uploads
feat: Add the MIME content type to s3 uploads
2 parents d116676 + 29c7361 commit 3bc2e22

File tree

2 files changed

+23
-5
lines changed

2 files changed

+23
-5
lines changed

pkg/config/s3.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ type S3Info struct {
3030
Endpoint *string
3131
}
3232

33-
func (s *S3Info) Upload(asset string, rwc io.ReadWriteCloser) error {
33+
func (s *S3Info) Upload(asset string, contentType string, rwc io.ReadWriteCloser) error {
3434
defer rwc.Close()
3535

3636
log.Debug().Msgf("S3 bucket path: %q", asset)
@@ -54,9 +54,10 @@ func (s *S3Info) Upload(asset string, rwc io.ReadWriteCloser) error {
5454
uploader := s3manager.NewUploader(session)
5555
// Upload input parameters
5656
upParams := s3manager.UploadInput{
57-
Bucket: aws.String(bucket),
58-
Key: aws.String(filepath.Join(key, asset)),
59-
Body: rwc,
57+
Bucket: aws.String(bucket),
58+
Key: aws.String(filepath.Join(key, asset)),
59+
Body: rwc,
60+
Metadata: aws.StringMap(map[string]string{"Content-Type": contentType}),
6061
}
6162
// Perform an upload.
6263
if _, err = uploader.Upload(&upParams); err != nil {

pkg/popeye.go

+18-1
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ func (p *Popeye) Lint() (int, int, error) {
178178
}
179179
case config.IsStrSet(p.flags.S3.Bucket):
180180
asset := filepath.Join(p.clusterPath(), p.scanFileName())
181-
if err := p.flags.S3.Upload(asset, p.outputTarget); err != nil {
181+
if err := p.flags.S3.Upload(asset, p.fileContentType(), p.outputTarget); err != nil {
182182
log.Fatal().Msgf("S3 upload failed: %s", err)
183183
}
184184
}
@@ -551,3 +551,20 @@ func (p *Popeye) fileExt() string {
551551
return "txt"
552552
}
553553
}
554+
555+
func (p *Popeye) fileContentType() string {
556+
switch *p.flags.Output {
557+
case "junit":
558+
// https://datatracker.ietf.org/doc/html/rfc7303#section-4.1
559+
return "application/xml"
560+
case "json":
561+
return "application/json"
562+
case "yaml":
563+
// https://datatracker.ietf.org/doc/html/rfc9512
564+
return "application/yaml"
565+
case "html":
566+
return "text/html"
567+
default:
568+
return "text/plain"
569+
}
570+
}

0 commit comments

Comments
 (0)