avatar defaults to import from disqus
This commit is contained in:
+5
-4
@@ -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
@@ -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,
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user