mirror of https://github.com/jlelse/GoBlog
Add Delete support to activitypub
This commit is contained in:
parent
7d86c8c1cf
commit
85f010b895
|
@ -219,15 +219,18 @@ func apRemoveFollower(blog, follower string) error {
|
|||
}
|
||||
|
||||
func apPost(p *post) {
|
||||
if !appConfig.ActivityPub.Enabled {
|
||||
return
|
||||
}
|
||||
n := p.toASNote()
|
||||
create := make(map[string]interface{})
|
||||
create["@context"] = asContext
|
||||
create["actor"] = appConfig.Blogs[p.Blog].apIri()
|
||||
create["id"] = appConfig.Server.PublicAddress + p.Path
|
||||
create["published"] = n.Published
|
||||
create["type"] = "Create"
|
||||
create["object"] = n
|
||||
apSendToAllFollowers(p.Blog, create)
|
||||
createActivity := make(map[string]interface{})
|
||||
createActivity["@context"] = asContext
|
||||
createActivity["actor"] = appConfig.Blogs[p.Blog].apIri()
|
||||
createActivity["id"] = appConfig.Server.PublicAddress + p.Path
|
||||
createActivity["published"] = n.Published
|
||||
createActivity["type"] = "Create"
|
||||
createActivity["object"] = n
|
||||
apSendToAllFollowers(p.Blog, createActivity)
|
||||
}
|
||||
|
||||
func apUpdate(p *post) {
|
||||
|
@ -235,7 +238,19 @@ func apUpdate(p *post) {
|
|||
}
|
||||
|
||||
func apDelete(p *post) {
|
||||
// TODO
|
||||
if !appConfig.ActivityPub.Enabled {
|
||||
return
|
||||
}
|
||||
deleteActivity := make(map[string]interface{})
|
||||
deleteActivity["@context"] = asContext
|
||||
deleteActivity["actor"] = appConfig.Blogs[p.Blog].apIri()
|
||||
deleteActivity["id"] = appConfig.Server.PublicAddress + p.Path + "#delete"
|
||||
deleteActivity["type"] = "Delete"
|
||||
deleteActivity["object"] = map[string]string{
|
||||
"id": appConfig.Server.PublicAddress + p.Path,
|
||||
"type": "Tombstone",
|
||||
}
|
||||
apSendToAllFollowers(p.Blog, deleteActivity)
|
||||
}
|
||||
|
||||
func apAccept(blogName string, blog *configBlog, follow map[string]interface{}) {
|
||||
|
|
2
go.mod
2
go.mod
|
@ -42,7 +42,7 @@ require (
|
|||
golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897
|
||||
golang.org/x/net v0.0.0-20201031054903-ff519b6c9102 // indirect
|
||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9
|
||||
golang.org/x/sys v0.0.0-20201106081118-db71ae66460a // indirect
|
||||
golang.org/x/sys v0.0.0-20201107080550-4d91cf3a1aaf // indirect
|
||||
golang.org/x/text v0.3.4 // indirect
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
|
||||
gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b // indirect
|
||||
|
|
4
go.sum
4
go.sum
|
@ -574,8 +574,8 @@ golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7w
|
|||
golang.org/x/sys v0.0.0-20200724161237-0e2f3a69832c h1:UIcGWL6/wpCfyGuJnRFJRurA+yj8RrW7Q6x2YMCXt6c=
|
||||
golang.org/x/sys v0.0.0-20200724161237-0e2f3a69832c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201106081118-db71ae66460a h1:ALUFBKlIyeY7y5ZgPJmblk/vKz+zBQSnNiPkt41sgeg=
|
||||
golang.org/x/sys v0.0.0-20201106081118-db71ae66460a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201107080550-4d91cf3a1aaf h1:kt3wY1Lu5MJAnKTfoMR52Cu4gwvna4VTzNOiT8tY73s=
|
||||
golang.org/x/sys v0.0.0-20201107080550-4d91cf3a1aaf/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
|
||||
|
|
17
postsDb.go
17
postsDb.go
|
@ -147,7 +147,7 @@ func (p *post) createOrReplace(new bool) error {
|
|||
return err
|
||||
}
|
||||
finishWritingToDb()
|
||||
go purgeCache()
|
||||
purgeCache()
|
||||
defer func(p *post) {
|
||||
postPostHooks(p.Path)
|
||||
go apPost(p)
|
||||
|
@ -159,19 +159,23 @@ func deletePost(path string) error {
|
|||
if path == "" {
|
||||
return nil
|
||||
}
|
||||
p, err := getPost(path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
startWritingToDb()
|
||||
tx, err := appDb.Begin()
|
||||
if err != nil {
|
||||
finishWritingToDb()
|
||||
return err
|
||||
}
|
||||
_, err = tx.Exec("delete from posts where path=?", path)
|
||||
_, err = tx.Exec("delete from posts where path=?", p.Path)
|
||||
if err != nil {
|
||||
_ = tx.Rollback()
|
||||
finishWritingToDb()
|
||||
return err
|
||||
}
|
||||
_, err = tx.Exec("delete from post_parameters where path=?", path)
|
||||
_, err = tx.Exec("delete from post_parameters where path=?", p.Path)
|
||||
if err != nil {
|
||||
_ = tx.Rollback()
|
||||
finishWritingToDb()
|
||||
|
@ -183,7 +187,10 @@ func deletePost(path string) error {
|
|||
return err
|
||||
}
|
||||
finishWritingToDb()
|
||||
go purgeCache()
|
||||
defer postDeleteHooks(path)
|
||||
purgeCache()
|
||||
defer func(p *post) {
|
||||
postDeleteHooks(p.Path)
|
||||
apDelete(p)
|
||||
}(p)
|
||||
return reloadRouter()
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue