avatar defaults to import from disqus

This commit is contained in:
Umputun
2018-02-17 18:52:31 -06:00
parent bb0e0a05b0
commit 9e1c0d0640
5 changed files with 33 additions and 15 deletions
+5 -4
View File
@@ -79,10 +79,11 @@ func main() {
if p.Active != nil && p.Command.Find("import") == p.Active {
// import mode
params := migrator.ImportParams{
DataStore: dataStore,
InputFile: opts.ImportCommand.InputFile,
Provider: opts.ImportCommand.Provider,
SiteID: opts.ImportCommand.SiteID,
DataStore: dataStore,
InputFile: opts.ImportCommand.InputFile,
Provider: opts.ImportCommand.Provider,
SiteID: opts.ImportCommand.SiteID,
DefaultAvatarURL: opts.RemarkURL + "/api/v1/avatar/" + opts.ServerCommand.DefaultAvatar,
}
if err := migrator.ImportComments(params); err != nil {
log.Fatalf("[ERROR] failed to import, %+v", err)
+10 -4
View File
@@ -14,7 +14,8 @@ import (
// Disqus implements Importer from disqus xml
type Disqus struct {
DataStore store.Interface
DataStore store.Interface
DefaultAvatarURL string
}
type disqusThread struct {
@@ -118,9 +119,14 @@ func (d *Disqus) convert(r io.Reader, siteID string) (ch chan store.Comment) {
continue
}
c := store.Comment{
ID: comment.UID,
Locator: store.Locator{URL: postsMap[comment.Tid.Val], SiteID: siteID},
User: store.User{ID: "disqus_" + comment.AuthorUserName, Name: comment.AuthorName, IP: comment.IP},
ID: comment.UID,
Locator: store.Locator{URL: postsMap[comment.Tid.Val], SiteID: siteID},
User: store.User{
ID: "disqus_" + comment.AuthorUserName,
Name: comment.AuthorName,
Picture: d.DefaultAvatarURL,
IP: comment.IP,
},
Text: d.cleanText(comment.Message),
Timestamp: comment.CreatedAt,
ParentID: comment.Pid.Val,
+11 -1
View File
@@ -16,7 +16,7 @@ func TestDisqus_Import(t *testing.T) {
defer os.Remove("/tmp/remark-test.db")
dataStore, err := store.NewBoltDB(store.BoltSite{FileName: "/tmp/remark-test.db", SiteID: "test"})
require.Nil(t, err, "create store")
d := Disqus{DataStore: dataStore}
d := Disqus{DataStore: dataStore, DefaultAvatarURL: "http://localhost:8080/avatar.png"}
err = d.Import(strings.NewReader(xmlTest), "test")
assert.Nil(t, err)
@@ -24,6 +24,16 @@ func TestDisqus_Import(t *testing.T) {
assert.Nil(t, err)
assert.Equal(t, 3, len(last), "3 comments imported")
c := last[0]
assert.True(t, strings.HasPrefix(c.Text, "<p>Google App Engine"))
assert.Equal(t, "299986072", c.ID)
assert.Equal(t, "", c.ParentID)
assert.Equal(t, store.Locator{SiteID: "test", URL: "http://radio-t.umputun.com/2011/03/229_8880.html"}, c.Locator)
assert.Equal(t, "Dmitry Noname", c.User.Name)
assert.Equal(t, "disqus_google-74b9e7568ef6860e93862c5d77590123", c.User.ID)
assert.Equal(t, "89.89.89.139", c.User.IP)
assert.Equal(t, "http://localhost:8080/avatar.png", c.User.Picture)
posts, err := dataStore.List("test")
assert.Nil(t, err)
assert.Equal(t, 2, len(posts), "2 posts")
+6 -5
View File
@@ -25,10 +25,11 @@ type Exporter interface {
// ImportParams defines everything needed to run import
type ImportParams struct {
DataStore store.Interface
InputFile string
Provider string
SiteID string
DataStore store.Interface
InputFile string
Provider string
SiteID string
DefaultAvatarURL string
}
// ImportComments imports from given provider format and saves to store
@@ -38,7 +39,7 @@ func ImportComments(p ImportParams) error {
var importer Importer
switch p.Provider {
case "disqus":
importer = &Disqus{DataStore: p.DataStore}
importer = &Disqus{DataStore: p.DataStore, DefaultAvatarURL: p.DefaultAvatarURL}
case "native":
importer = &Remark{DataStore: p.DataStore}
default:
+1 -1
View File
@@ -35,7 +35,7 @@ func (p *AvatarProxy) Put(u store.User) (avatarURL string, err error) {
if u.Picture == "" {
if p.DefaultAvatar != "" {
return p.RoutePath + "/" + p.DefaultAvatar, nil
return p.RemarkURL + p.RoutePath + "/" + p.DefaultAvatar, nil
}
return "", errors.Errorf("no picture for %s", u.ID)
}