mirror of https://github.com/jlelse/GoBlog
Make hooks a bit more modular
This commit is contained in:
parent
eed86794ff
commit
8332d7ee43
|
@ -29,6 +29,24 @@ var (
|
||||||
)
|
)
|
||||||
|
|
||||||
func initActivityPub() error {
|
func initActivityPub() error {
|
||||||
|
if !appConfig.ActivityPub.Enabled {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
// Add hooks
|
||||||
|
postHooks[postPostHook] = append(postHooks[postPostHook], func(p *post) {
|
||||||
|
if p.isPublishedSectionPost() {
|
||||||
|
p.apPost()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
postHooks[postUpdateHook] = append(postHooks[postUpdateHook], func(p *post) {
|
||||||
|
if p.isPublishedSectionPost() {
|
||||||
|
p.apUpdate()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
postHooks[postDeleteHook] = append(postHooks[postDeleteHook], func(p *post) {
|
||||||
|
p.apDelete()
|
||||||
|
})
|
||||||
|
// Read key and prepare signing
|
||||||
pkfile, err := ioutil.ReadFile(appConfig.ActivityPub.KeyPath)
|
pkfile, err := ioutil.ReadFile(appConfig.ActivityPub.KeyPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -266,9 +284,6 @@ func apRemoveFollower(blog, follower string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *post) apPost() {
|
func (p *post) apPost() {
|
||||||
if !appConfig.ActivityPub.Enabled {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
n := p.toASNote()
|
n := p.toASNote()
|
||||||
createActivity := make(map[string]interface{})
|
createActivity := make(map[string]interface{})
|
||||||
createActivity["@context"] = asContext
|
createActivity["@context"] = asContext
|
||||||
|
@ -286,9 +301,6 @@ func (p *post) apPost() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *post) apUpdate() {
|
func (p *post) apUpdate() {
|
||||||
if !appConfig.ActivityPub.Enabled {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
n := p.toASNote()
|
n := p.toASNote()
|
||||||
updateActivity := make(map[string]interface{})
|
updateActivity := make(map[string]interface{})
|
||||||
updateActivity["@context"] = asContext
|
updateActivity["@context"] = asContext
|
||||||
|
@ -301,9 +313,6 @@ func (p *post) apUpdate() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *post) apAnnounce() {
|
func (p *post) apAnnounce() {
|
||||||
if !appConfig.ActivityPub.Enabled {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
announceActivity := make(map[string]interface{})
|
announceActivity := make(map[string]interface{})
|
||||||
announceActivity["@context"] = asContext
|
announceActivity["@context"] = asContext
|
||||||
announceActivity["actor"] = appConfig.Blogs[p.Blog].apIri()
|
announceActivity["actor"] = appConfig.Blogs[p.Blog].apIri()
|
||||||
|
@ -315,9 +324,6 @@ func (p *post) apAnnounce() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *post) apDelete() {
|
func (p *post) apDelete() {
|
||||||
if !appConfig.ActivityPub.Enabled {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
deleteActivity := make(map[string]interface{})
|
deleteActivity := make(map[string]interface{})
|
||||||
deleteActivity["@context"] = asContext
|
deleteActivity["@context"] = asContext
|
||||||
deleteActivity["actor"] = appConfig.Blogs[p.Blog].apIri()
|
deleteActivity["actor"] = appConfig.Blogs[p.Blog].apIri()
|
||||||
|
|
28
hooks.go
28
hooks.go
|
@ -17,6 +17,16 @@ func preStartHooks() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type postHookType string
|
||||||
|
|
||||||
|
const (
|
||||||
|
postPostHook postHookType = "post"
|
||||||
|
postUpdateHook postHookType = "update"
|
||||||
|
postDeleteHook postHookType = "delete"
|
||||||
|
)
|
||||||
|
|
||||||
|
var postHooks = map[postHookType][]func(*post){}
|
||||||
|
|
||||||
func (p *post) postPostHooks() {
|
func (p *post) postPostHooks() {
|
||||||
for _, cmdTmplString := range appConfig.Hooks.PostPost {
|
for _, cmdTmplString := range appConfig.Hooks.PostPost {
|
||||||
go func(p *post, cmdTmplString string) {
|
go func(p *post, cmdTmplString string) {
|
||||||
|
@ -26,12 +36,9 @@ func (p *post) postPostHooks() {
|
||||||
})
|
})
|
||||||
}(p, cmdTmplString)
|
}(p, cmdTmplString)
|
||||||
}
|
}
|
||||||
if p.Published != "" && p.Section != "" {
|
for _, f := range postHooks[postPostHook] {
|
||||||
// It's a published post
|
go f(p)
|
||||||
go p.apPost()
|
|
||||||
go p.tgPost()
|
|
||||||
}
|
}
|
||||||
go p.sendWebmentions()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *post) postUpdateHooks() {
|
func (p *post) postUpdateHooks() {
|
||||||
|
@ -43,11 +50,9 @@ func (p *post) postUpdateHooks() {
|
||||||
})
|
})
|
||||||
}(p, cmdTmplString)
|
}(p, cmdTmplString)
|
||||||
}
|
}
|
||||||
if p.Published != "" && p.Section != "" {
|
for _, f := range postHooks[postUpdateHook] {
|
||||||
// It's a published post
|
go f(p)
|
||||||
go p.apUpdate()
|
|
||||||
}
|
}
|
||||||
go p.sendWebmentions()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *post) postDeleteHooks() {
|
func (p *post) postDeleteHooks() {
|
||||||
|
@ -59,8 +64,9 @@ func (p *post) postDeleteHooks() {
|
||||||
})
|
})
|
||||||
}(p, cmdTmplString)
|
}(p, cmdTmplString)
|
||||||
}
|
}
|
||||||
go p.apDelete()
|
for _, f := range postHooks[postDeleteHook] {
|
||||||
go p.sendWebmentions()
|
go f(p)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type hookTemplateData struct {
|
type hookTemplateData struct {
|
||||||
|
|
3
main.go
3
main.go
|
@ -49,13 +49,12 @@ func main() {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if appConfig.ActivityPub.Enabled {
|
|
||||||
err = initActivityPub()
|
err = initActivityPub()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
initTelegram()
|
||||||
initWebmention()
|
initWebmention()
|
||||||
initCache()
|
initCache()
|
||||||
initNodeInfo()
|
initNodeInfo()
|
||||||
|
|
|
@ -77,3 +77,7 @@ func (p *post) translations() []*post {
|
||||||
}
|
}
|
||||||
return translations
|
return translations
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *post) isPublishedSectionPost() bool {
|
||||||
|
return p.Published != "" && p.Section != ""
|
||||||
|
}
|
||||||
|
|
21
telegram.go
21
telegram.go
|
@ -9,8 +9,25 @@ import (
|
||||||
|
|
||||||
const telegramBaseURL = "https://api.telegram.org/bot"
|
const telegramBaseURL = "https://api.telegram.org/bot"
|
||||||
|
|
||||||
|
func initTelegram() {
|
||||||
|
enable := false
|
||||||
|
for _, b := range appConfig.Blogs {
|
||||||
|
if tg := b.Telegram; tg != nil && tg.Enabled && tg.BotToken != "" && tg.ChatID != "" {
|
||||||
|
enable = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if enable {
|
||||||
|
postHooks[postPostHook] = append(postHooks[postPostHook], func(p *post) {
|
||||||
|
if p.isPublishedSectionPost() {
|
||||||
|
p.tgPost()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (p *post) tgPost() {
|
func (p *post) tgPost() {
|
||||||
if appConfig.Blogs[p.Blog].Telegram == nil || !appConfig.Blogs[p.Blog].Telegram.Enabled {
|
tg := appConfig.Blogs[p.Blog].Telegram
|
||||||
|
if tg == nil || !tg.Enabled || tg.BotToken == "" || tg.ChatID == "" {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var message bytes.Buffer
|
var message bytes.Buffer
|
||||||
|
@ -19,7 +36,7 @@ func (p *post) tgPost() {
|
||||||
message.WriteString("\n\n")
|
message.WriteString("\n\n")
|
||||||
}
|
}
|
||||||
message.WriteString(p.fullURL())
|
message.WriteString(p.fullURL())
|
||||||
sendTelegramMessage(message.String(), appConfig.Blogs[p.Blog].Telegram.BotToken, appConfig.Blogs[p.Blog].Telegram.ChatID)
|
sendTelegramMessage(message.String(), tg.BotToken, tg.ChatID)
|
||||||
}
|
}
|
||||||
|
|
||||||
func sendTelegramMessage(text, bottoken, chatID string) error {
|
func sendTelegramMessage(text, bottoken, chatID string) error {
|
||||||
|
|
|
@ -33,6 +33,14 @@ type mention struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func initWebmention() {
|
func initWebmention() {
|
||||||
|
// Add hooks
|
||||||
|
hookFunc := func(p *post) {
|
||||||
|
p.sendWebmentions()
|
||||||
|
}
|
||||||
|
postHooks[postPostHook] = append(postHooks[postPostHook], hookFunc)
|
||||||
|
postHooks[postUpdateHook] = append(postHooks[postUpdateHook], hookFunc)
|
||||||
|
postHooks[postDeleteHook] = append(postHooks[postDeleteHook], hookFunc)
|
||||||
|
// Start verifier
|
||||||
startWebmentionVerifier()
|
startWebmentionVerifier()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue