mirror of
https://github.com/Luzifer/share.git
synced 2024-12-20 10:31:16 +00:00
Force bootstrap to apply gzip encoding
Signed-off-by: Knut Ahlers <knut@ahlers.me>
This commit is contained in:
parent
81060aba97
commit
f679cd3785
3 changed files with 30 additions and 9 deletions
2
http.go
2
http.go
|
@ -19,7 +19,7 @@ func simpleFilePost(res http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
url, err := executeUpload(fh.Filename, f, true, "")
|
||||
url, err := executeUpload(fh.Filename, f, true, "", false)
|
||||
if err != nil {
|
||||
log.WithError(err).Error("Uploading file from HTTP request failed")
|
||||
http.Error(res, "Failed to upload file. For details see the log.", http.StatusInternalServerError)
|
||||
|
|
7
main.go
7
main.go
|
@ -9,8 +9,9 @@ import (
|
|||
"io"
|
||||
"os"
|
||||
|
||||
"github.com/Luzifer/rconfig"
|
||||
log "github.com/sirupsen/logrus"
|
||||
|
||||
"github.com/Luzifer/rconfig"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -98,7 +99,7 @@ func doCLIUpload() error {
|
|||
inFile = inFileHandle
|
||||
}
|
||||
|
||||
url, err := executeUpload(inFileName, inFile, true, cfg.ContentType)
|
||||
url, err := executeUpload(inFileName, inFile, true, cfg.ContentType, false)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Unable to upload file: %s", err)
|
||||
}
|
||||
|
@ -109,7 +110,7 @@ func doCLIUpload() error {
|
|||
|
||||
func doBootstrap() error {
|
||||
for _, asset := range []string{"index.html", "app.js"} {
|
||||
if _, err := executeUpload(asset, bytes.NewReader(MustAsset("frontend/"+asset)), false, ""); err != nil {
|
||||
if _, err := executeUpload(asset, bytes.NewReader(MustAsset("frontend/"+asset)), false, "", true); err != nil {
|
||||
return fmt.Errorf("Unable to upload bootstrap asset %q: %s", asset, err)
|
||||
}
|
||||
}
|
||||
|
|
22
upload.go
22
upload.go
|
@ -2,6 +2,7 @@ package main
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"compress/gzip"
|
||||
"crypto/sha1"
|
||||
"fmt"
|
||||
"html/template"
|
||||
|
@ -16,10 +17,11 @@ import (
|
|||
"github.com/aws/aws-sdk-go/aws/session"
|
||||
"github.com/aws/aws-sdk-go/service/s3"
|
||||
"github.com/cheggaaa/pb"
|
||||
"github.com/pkg/errors"
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
func executeUpload(inFileName string, inFileHandle io.ReadSeeker, useCalculatedFilename bool, overrideMimeType string) (string, error) {
|
||||
func executeUpload(inFileName string, inFileHandle io.ReadSeeker, useCalculatedFilename bool, overrideMimeType string, forceGzip bool) (string, error) {
|
||||
var (
|
||||
upFile = inFileName
|
||||
err error
|
||||
|
@ -42,6 +44,23 @@ func executeUpload(inFileName string, inFileHandle io.ReadSeeker, useCalculatedF
|
|||
|
||||
log.Debugf("Uploading file to %q with type %q", upFile, mimeType)
|
||||
|
||||
var contentEncoding *string
|
||||
if forceGzip {
|
||||
buf := new(bytes.Buffer)
|
||||
gw := gzip.NewWriter(buf)
|
||||
|
||||
if _, err := io.Copy(gw, inFileHandle); err != nil {
|
||||
return "", errors.Wrap(err, "Unable to compress file")
|
||||
}
|
||||
|
||||
if err := gw.Close(); err != nil {
|
||||
return "", errors.Wrap(err, "Unable to close gzip writer")
|
||||
}
|
||||
|
||||
inFileHandle = bytes.NewReader(buf.Bytes())
|
||||
contentEncoding = aws.String("gzip")
|
||||
}
|
||||
|
||||
sess := session.Must(session.NewSession())
|
||||
svc := s3.New(sess)
|
||||
|
||||
|
@ -71,6 +90,7 @@ func executeUpload(inFileName string, inFileHandle io.ReadSeeker, useCalculatedF
|
|||
if _, err := svc.PutObject(&s3.PutObjectInput{
|
||||
Body: ps,
|
||||
Bucket: aws.String(cfg.Bucket),
|
||||
ContentEncoding: contentEncoding,
|
||||
ContentType: aws.String(mimeType),
|
||||
Key: aws.String(upFile),
|
||||
}); err != nil {
|
||||
|
|
Loading…
Reference in a new issue