propagate ETag

This commit is contained in:
6543 2022-06-14 18:01:54 +02:00
parent cc32bab31f
commit 6dcb3b4ca0
No known key found for this signature in database
GPG key ID: C99B82E40B027BAE
2 changed files with 9 additions and 0 deletions

View file

@ -25,6 +25,7 @@ type Client struct {
type FileResponse struct {
Exists bool
ETag []byte
MimeType string
Body []byte
}

View file

@ -161,6 +161,14 @@ func (o *Options) Upstream(ctx *fasthttp.RequestCtx, giteaClient *gitea.Client,
mimeType := o.getMimeTypeByExtension()
ctx.Response.Header.SetContentType(mimeType)
// Set ETag
if cachedResponse.Exists {
ctx.Response.Header.SetBytesV(fasthttp.HeaderETag, cachedResponse.ETag)
} else if res != nil {
cachedResponse.ETag = res.Header.Peek(fasthttp.HeaderETag)
ctx.Response.Header.SetBytesV(fasthttp.HeaderETag, cachedResponse.ETag)
}
if ctx.Response.StatusCode() != fasthttp.StatusNotFound {
// Everything's okay so far
ctx.Response.SetStatusCode(fasthttp.StatusOK)