diff --git a/net/server/internal/api_getCardImage.go b/net/server/internal/api_getCardImage.go index cfcd56d9..9a7895eb 100644 --- a/net/server/internal/api_getCardImage.go +++ b/net/server/internal/api_getCardImage.go @@ -1,6 +1,8 @@ package databag import ( + "time" + "bytes" "errors" "net/http" "gorm.io/gorm" @@ -42,7 +44,7 @@ func GetCardProfileImage(w http.ResponseWriter, r *http.Request) { return } - w.Header().Set("Content-Type", http.DetectContentType(data)) - w.Write(data); + // response with content + http.ServeContent(w, r, "image", time.Unix(slot.Card.Updated, 0), bytes.NewReader(data)) } diff --git a/net/server/internal/api_getChannelTopicAsset.go b/net/server/internal/api_getChannelTopicAsset.go index 0c482c20..137201eb 100644 --- a/net/server/internal/api_getChannelTopicAsset.go +++ b/net/server/internal/api_getChannelTopicAsset.go @@ -10,8 +10,6 @@ import ( func GetChannelTopicAsset(w http.ResponseWriter, r *http.Request) { -PrintMsg(r) - // scan parameters params := mux.Vars(r) topicId := params["topicId"] diff --git a/net/server/internal/api_getProfileImage.go b/net/server/internal/api_getProfileImage.go index da52f69b..41c80fad 100644 --- a/net/server/internal/api_getProfileImage.go +++ b/net/server/internal/api_getProfileImage.go @@ -1,6 +1,8 @@ package databag import ( + "time" + "bytes" "errors" "net/http" "encoding/base64" @@ -26,8 +28,8 @@ func GetProfileImage(w http.ResponseWriter, r *http.Request) { return } - w.Header().Set("Content-Type", http.DetectContentType(data)) - w.Write(data); + // response with content + http.ServeContent(w, r, "image", time.Unix(account.Updated, 0), bytes.NewReader(data)) } diff --git a/net/server/internal/store/schema.go b/net/server/internal/store/schema.go index e001448c..417f1d37 100644 --- a/net/server/internal/store/schema.go +++ b/net/server/internal/store/schema.go @@ -66,6 +66,7 @@ type Account struct { ChannelRevision int64 `gorm:"not null;default:1"` CardRevision int64 `gorm:"not null;default:1"` Created int64 `gorm:"autoCreateTime"` + Updated int64 `gorm:"autoUpdateTime"` Disabled bool `gorm:"not null;default:false"` AccountDetail AccountDetail Apps []App diff --git a/net/server/internal/ucAttributeShare_test.go b/net/server/internal/ucAttributeShare_test.go index 97f9e1cd..3443adc2 100644 --- a/net/server/internal/ucAttributeShare_test.go +++ b/net/server/internal/ucAttributeShare_test.go @@ -140,7 +140,7 @@ func TestAttributeShare(t *testing.T) { param["articleId"] = article.Id param["field"] = "nested.image" aData, aType, aErr := ApiTestData(GetArticleSubjectField, "GET", "/attributes/articles/{articleId}/subject/{field}", - ¶m, nil, APP_TOKENAPP, set.A.Token) + ¶m, nil, APP_TOKENAPP, set.A.Token, 0, 0) assert.NoError(t, aErr) assert.Equal(t, "image/png", aType["Content-Type"][0]) img, _ = base64.StdEncoding.DecodeString(image) @@ -150,7 +150,7 @@ func TestAttributeShare(t *testing.T) { param["articleId"] = article.Id param["field"] = "nested.image" cData, cType, cErr := ApiTestData(GetArticleSubjectField, "GET", "/attributes/articles/{articleId}/subject/{field}", - ¶m, nil, APP_TOKENCONTACT, set.C.A.Token) + ¶m, nil, APP_TOKENCONTACT, set.C.A.Token, 0, 0) assert.NoError(t, cErr) assert.Equal(t, "image/png", cType["Content-Type"][0]) img, _ = base64.StdEncoding.DecodeString(image) diff --git a/net/server/internal/ucContactSync_test.go b/net/server/internal/ucContactSync_test.go index 7333938c..8e390b9e 100644 --- a/net/server/internal/ucContactSync_test.go +++ b/net/server/internal/ucContactSync_test.go @@ -41,7 +41,7 @@ func TestContactSync(t *testing.T) { ¶m, &msg, APP_TOKENAPP, set.B.Token, &card, nil)) assert.True(t, card.Data.CardProfile.ImageSet) data, hdr, res = ApiTestData(GetCardProfileImage, "GET", "/contact/cards/{cardId}/profile/image", - ¶m, &data, APP_TOKENAPP, set.B.Token) + ¶m, &data, APP_TOKENAPP, set.B.Token, 0, 0) assert.NoError(t, res) // compare retrieved image diff --git a/net/server/internal/ucProfileUpdate_test.go b/net/server/internal/ucProfileUpdate_test.go index c7c4ab04..94c293eb 100644 --- a/net/server/internal/ucProfileUpdate_test.go +++ b/net/server/internal/ucProfileUpdate_test.go @@ -103,7 +103,7 @@ func TestProfileUpdate(t *testing.T) { // retrieve profile image data, hdr, err = ApiTestData(GetProfileImage, "GET", "/profile/image", nil, nil, - APP_TOKENAPP, set.A.Token) + APP_TOKENAPP, set.A.Token, 0, 0) assert.NoError(t, err) // compare retrieved image