add extraction of image ids

This commit is contained in:
Umputun
2019-03-23 03:47:07 -05:00
parent b49e242891
commit de292a4146
2 changed files with 34 additions and 0 deletions
+24
View File
@@ -16,6 +16,7 @@ import (
"sync"
"time"
"github.com/PuerkitoBio/goquery"
log "github.com/go-pkgz/lgr"
"github.com/google/uuid"
"github.com/pkg/errors"
@@ -186,3 +187,26 @@ func (f *FileSystem) location(base string, id string) string {
return path.Join(base, user, partition(id), file)
}
// ExtractPictures gets list of images from the doc html and convert from urls to ids, i.e. user/pic.png
func ExtractPictures(commentHTML string, match string) (ids []string, err error) {
doc, err := goquery.NewDocumentFromReader(strings.NewReader(commentHTML))
if err != nil {
return nil, errors.Wrap(err, "can't create document")
}
result := []string{}
doc.Find("img").Each(func(i int, s *goquery.Selection) {
if im, ok := s.Attr("src"); ok {
if strings.Contains(im, match) {
elems := strings.Split(im, "/")
if len(elems) >= 2 {
id := elems[len(elems)-2] + "/" + elems[len(elems)-1]
result = append(result, id)
}
}
}
})
return result, nil
}
+10
View File
@@ -183,6 +183,16 @@ func TestImage_Cleanup(t *testing.T) {
assert.NotNil(t, err, "no file on staging anymore")
}
func TestExtractPictures(t *testing.T) {
html := `blah <img src="/blah/user1/pic1.png"/> foo
<img src="/blah/user2/pic3.png"/> xyz <p>123</p> <img src="/pic3.png"/>`
ids, err := ExtractPictures(html, "/blah/")
require.NoError(t, err)
assert.Equal(t, 2, len(ids), "two images")
assert.Equal(t, "user1/pic1.png", ids[0])
assert.Equal(t, "user2/pic3.png", ids[1])
}
func prepareImageTest(t *testing.T) (svc FileSystem, teardown func()) {
loc, err := ioutil.TempDir("", "test_image_r42")
require.NoError(t, err, "failed to make temp dir")