Adding Etag to user profile pictures. (#4926)
Этот коммит содержится в:
коммит произвёл
enahum
родитель
42e04d92c4
Коммит
4bca74d5c1
@@ -1272,11 +1272,17 @@ func getProfileImage(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
id := params["user_id"]
|
id := params["user_id"]
|
||||||
readFailed := false
|
readFailed := false
|
||||||
|
|
||||||
|
var etag string
|
||||||
|
|
||||||
if result := <-Srv.Store.User().Get(id); result.Err != nil {
|
if result := <-Srv.Store.User().Get(id); result.Err != nil {
|
||||||
c.Err = result.Err
|
c.Err = result.Err
|
||||||
return
|
return
|
||||||
} else {
|
} else {
|
||||||
var img []byte
|
var img []byte
|
||||||
|
etag = strconv.FormatInt(result.Data.(*model.User).LastPictureUpdate, 10)
|
||||||
|
if HandleEtag(etag, "Profile Image", w, r) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if len(utils.Cfg.FileSettings.DriverName) == 0 {
|
if len(utils.Cfg.FileSettings.DriverName) == 0 {
|
||||||
var err *model.AppError
|
var err *model.AppError
|
||||||
@@ -1314,6 +1320,7 @@ func getProfileImage(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
w.Header().Set("Content-Type", "image/png")
|
w.Header().Set("Content-Type", "image/png")
|
||||||
|
w.Header().Set(model.HEADER_ETAG_SERVER, etag)
|
||||||
w.Write(img)
|
w.Write(img)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -712,7 +712,15 @@ func TestUserCreateImage(t *testing.T) {
|
|||||||
|
|
||||||
Client.Login(user.Email, "passwd1")
|
Client.Login(user.Email, "passwd1")
|
||||||
|
|
||||||
Client.DoApiGet("/users/"+user.Id+"/image", "", "")
|
if resp, err := Client.DoApiGet("/users/"+user.Id+"/image", "", ""); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
} else {
|
||||||
|
etag := resp.Header.Get(model.HEADER_ETAG_SERVER)
|
||||||
|
resp2, _ := Client.DoApiGet("/users/"+user.Id+"/image", "", etag)
|
||||||
|
if resp2.StatusCode != 304 {
|
||||||
|
t.Fatal("Should have hit etag")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if utils.Cfg.FileSettings.DriverName == model.IMAGE_DRIVER_S3 {
|
if utils.Cfg.FileSettings.DriverName == model.IMAGE_DRIVER_S3 {
|
||||||
endpoint := utils.Cfg.FileSettings.AmazonS3Endpoint
|
endpoint := utils.Cfg.FileSettings.AmazonS3Endpoint
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user