From 38fc7e500cf40e0307b61d8cdbaa35c7b45f3d1b Mon Sep 17 00:00:00 2001 From: Umputun Date: Sat, 2 Feb 2019 22:29:02 -0600 Subject: [PATCH] simplify title setter with anon func --- backend/app/store/service/service.go | 17 ++++++++++------- backend/app/store/service/title.go | 2 +- backend/app/store/service/title_test.go | 3 ++- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/backend/app/store/service/service.go b/backend/app/store/service/service.go index eadd6059..282a39b4 100644 --- a/backend/app/store/service/service.go +++ b/backend/app/store/service/service.go @@ -76,14 +76,17 @@ func (s *DataStore) Create(comment store.Comment) (commentID string, err error) return "", ErrRestrictedWordsFound } - // keep input title and set to extracted if missing - if s.TitleExtractor != nil && comment.PostTitle == "" { - if title, err := s.TitleExtractor.Get(comment.Locator.URL); err == nil { - comment.PostTitle = title - } else { - log.Printf("[WARN] failed to set title, %v", err) + func() { // keep input title and set to extracted if missing + if s.TitleExtractor == nil || comment.PostTitle != "" { + return } - } + title, e := s.TitleExtractor.Get(comment.Locator.URL) + if e != nil { + log.Printf("[WARN] failed to set title, %v", e) + return + } + comment.PostTitle = title + }() return s.Interface.Create(comment) } diff --git a/backend/app/store/service/title.go b/backend/app/store/service/title.go index 00bc4e94..0d30c727 100644 --- a/backend/app/store/service/title.go +++ b/backend/app/store/service/title.go @@ -53,7 +53,7 @@ func (t *TitleExtractor) Get(url string) (string, error) { return title, nil }) - // on error save result (empty strung) to cache too but + // on error save result (empty string) to cache too and return "" title if err != nil { _, _ = t.cache.Get(url, func() (lcw.Value, error) { return "", nil }) return "", err diff --git a/backend/app/store/service/title_test.go b/backend/app/store/service/title_test.go index 0efa49e2..31b1eef7 100644 --- a/backend/app/store/service/title_test.go +++ b/backend/app/store/service/title_test.go @@ -1,6 +1,7 @@ package service import ( + "context" "fmt" "net/http" "net/http/httptest" @@ -84,7 +85,7 @@ func TestTitle_GetConcurrent(t *testing.T) { for i := 0; i < 100; i++ { i := i - g.Go(func() { + g.Go(func(_ context.Context) { title, err := ex.Get(ts.URL + "/good/" + strconv.Itoa(i)) require.Nil(t, err) assert.Equal(t, "blah 123 "+"/good/"+strconv.Itoa(i), title)