diff options
Diffstat (limited to 'internal/api')
| -rw-r--r-- | internal/api/client/fileserver/fileserver.go | 1 | ||||
| -rw-r--r-- | internal/api/client/fileserver/servefile.go | 22 | 
2 files changed, 16 insertions, 7 deletions
| diff --git a/internal/api/client/fileserver/fileserver.go b/internal/api/client/fileserver/fileserver.go index 1a140e86d..dcb54f986 100644 --- a/internal/api/client/fileserver/fileserver.go +++ b/internal/api/client/fileserver/fileserver.go @@ -59,5 +59,6 @@ func (m *FileServer) Route(s router.Router) error {  	// something like "/fileserver/:account_id/:media_type/:media_size/:file_name"  	fileServePath := fmt.Sprintf("%s/:%s/:%s/:%s/:%s", FileServeBasePath, AccountIDKey, MediaTypeKey, MediaSizeKey, FileNameKey)  	s.AttachHandler(http.MethodGet, fileServePath, m.ServeFile) +	s.AttachHandler(http.MethodHead, fileServePath, m.ServeFile)  	return nil  } diff --git a/internal/api/client/fileserver/servefile.go b/internal/api/client/fileserver/servefile.go index fffa15a1c..0858af3ce 100644 --- a/internal/api/client/fileserver/servefile.go +++ b/internal/api/client/fileserver/servefile.go @@ -22,6 +22,7 @@ import (  	"fmt"  	"io"  	"net/http" +	"strconv"  	"github.com/gin-gonic/gin"  	"github.com/superseriousbusiness/gotosocial/internal/api" @@ -107,11 +108,18 @@ func (m *FileServer) ServeFile(c *gin.Context) {  		return  	} -	c.DataFromReader(http.StatusOK, content.ContentLength, format, content.Content, map[string]string{ -		// since we'll never host different files at the same -		// URL (bc the ULIDs are generated per piece of media), -		// it's sensible and safe to use a long cache here, so -		// that clients don't keep fetching files over + over again -		"Cache-Control": "max-age=604800", -	}) +	// since we'll never host different files at the same +	// URL (bc the ULIDs are generated per piece of media), +	// it's sensible and safe to use a long cache here, so +	// that clients don't keep fetching files over + over again +	c.Header("Cache-Control", "max-age=604800") + +	if c.Request.Method == http.MethodHead { +		c.Header("Content-Type", format) +		c.Header("Content-Length", strconv.FormatInt(content.ContentLength, 10)) +		c.Status(http.StatusOK) +		return +	} + +	c.DataFromReader(http.StatusOK, content.ContentLength, format, content.Content, nil)  } | 
