mirror of
https://github.com/woodchen-ink/webp_server_go.git
synced 2025-07-18 13:42:02 +08:00
Implement fiber etag middleware to replace etag generation (#218)
This commit is contained in:
parent
c61ed7da6b
commit
c66fccfffd
@ -107,8 +107,6 @@ func convert(c *fiber.Ctx) error {
|
||||
c.Set("Content-Type", "image/avif")
|
||||
}
|
||||
|
||||
etag := genEtag(finalFileName)
|
||||
c.Set("ETag", etag)
|
||||
c.Set("X-Compression-Rate", getCompressionRate(rawImageAbs, finalFileName))
|
||||
return c.SendFile(finalFileName)
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"github.com/gofiber/fiber/v2/middleware/etag"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
@ -31,9 +32,17 @@ func setupParam() {
|
||||
}
|
||||
|
||||
func requestToServer(url string, app *fiber.App, ua, accept string) (*http.Response, []byte) {
|
||||
headers := make(map[string]string)
|
||||
headers["User-Agent"] = ua
|
||||
headers["Accept"] = accept
|
||||
return requestToServerHeaders(url, app, headers)
|
||||
}
|
||||
|
||||
func requestToServerHeaders(url string, app *fiber.App, headers map[string]string) (*http.Response, []byte) {
|
||||
req := httptest.NewRequest("GET", url, nil)
|
||||
req.Header.Set("User-Agent", ua)
|
||||
req.Header.Set("Accept", accept)
|
||||
for header, value := range headers {
|
||||
req.Header.Set(header, value)
|
||||
}
|
||||
resp, err := app.Test(req, 120000)
|
||||
if err != nil {
|
||||
return nil, nil
|
||||
@ -42,9 +51,13 @@ func requestToServer(url string, app *fiber.App, ua, accept string) (*http.Respo
|
||||
return resp, data
|
||||
}
|
||||
|
||||
|
||||
func TestServerHeaders(t *testing.T) {
|
||||
setupParam()
|
||||
var app = fiber.New()
|
||||
app.Use(etag.New(etag.Config{
|
||||
Weak: true,
|
||||
}))
|
||||
app.Get("/*", convert)
|
||||
url := "http://127.0.0.1:3333/webp_server.bmp"
|
||||
|
||||
@ -53,17 +66,42 @@ func TestServerHeaders(t *testing.T) {
|
||||
defer response.Body.Close()
|
||||
ratio := response.Header.Get("X-Compression-Rate")
|
||||
etag := response.Header.Get("Etag")
|
||||
lastModified := response.Header.Get("Last-Modified")
|
||||
|
||||
assert.NotEqual(t, "", ratio)
|
||||
assert.NotEqual(t, "", etag)
|
||||
assert.NotEqual(t, "", lastModified)
|
||||
|
||||
// TestServerHeadersNotModified
|
||||
var headers = map[string]string{
|
||||
"User-Agent": chromeUA,
|
||||
"Accept": acceptWebP,
|
||||
"If-None-Match": etag,
|
||||
}
|
||||
response, _ = requestToServerHeaders(url, app, headers)
|
||||
defer response.Body.Close()
|
||||
assert.Equal(t, 304, response.StatusCode)
|
||||
|
||||
headers["If-Modified-Since"] = lastModified
|
||||
response, _ = requestToServerHeaders(url, app, headers)
|
||||
defer response.Body.Close()
|
||||
assert.Equal(t, 304, response.StatusCode)
|
||||
|
||||
headers["If-None-Match"] = ""
|
||||
headers["If-Modified-Since"] = lastModified
|
||||
response, _ = requestToServerHeaders(url, app, headers)
|
||||
defer response.Body.Close()
|
||||
assert.Equal(t, 304, response.StatusCode)
|
||||
|
||||
// test for safari
|
||||
response, _ = requestToServer(url, app, safariUA, acceptLegacy)
|
||||
defer response.Body.Close()
|
||||
// ratio = response.Header.Get("X-Compression-Rate")
|
||||
etag = response.Header.Get("Etag")
|
||||
lastModified = response.Header.Get("Last-Modified")
|
||||
|
||||
assert.NotEqual(t, "", etag)
|
||||
assert.NotEqual(t, "", lastModified)
|
||||
}
|
||||
|
||||
func TestConvert(t *testing.T) {
|
||||
|
@ -10,6 +10,7 @@ import (
|
||||
|
||||
"github.com/davidbyttow/govips/v2/vips"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"github.com/gofiber/fiber/v2/middleware/etag"
|
||||
"github.com/gofiber/fiber/v2/middleware/logger"
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
@ -111,6 +112,9 @@ Develop by WebP Server team. https://github.com/webp-sh`, version)
|
||||
ServerHeader: "Webp Server Go",
|
||||
DisableStartupMessage: true,
|
||||
})
|
||||
app.Use(etag.New(etag.Config{
|
||||
Weak: true,
|
||||
}))
|
||||
app.Use(logger.New())
|
||||
|
||||
listenAddress := config.Host + ":" + config.Port
|
||||
|
Loading…
x
Reference in New Issue
Block a user