Add Delete support to activitypub

This commit is contained in:
Jan-Lukas Else 2020-11-08 23:04:32 +01:00
parent 7d86c8c1cf
commit 85f010b895
4 changed files with 39 additions and 17 deletions

View File

@ -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
View File

@ -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
View File

@ -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=

View File

@ -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()
}