Add Type metadata header to enable support for Confluence Blog Posts

This commit is contained in:
David Laing
2021-03-31 17:49:01 +01:00
parent 12510a1208
commit 07aa3700eb
7 changed files with 52 additions and 21 deletions

View File

@@ -20,7 +20,7 @@ func EnsureAncestry(
rest := ancestry
for i, title := range ancestry {
page, err := api.FindPage(space, title)
page, err := api.FindPage(space, title, "page")
if err != nil {
return nil, karma.Format(
err,
@@ -66,7 +66,7 @@ func EnsureAncestry(
if !dryRun {
for _, title := range rest {
page, err := api.CreatePage(space, parent, title, ``)
page, err := api.CreatePage(space, "page", parent, title, ``)
if err != nil {
return nil, karma.Format(
err,
@@ -95,7 +95,7 @@ func ValidateAncestry(
space string,
ancestry []string,
) (*confluence.PageInfo, error) {
page, err := api.FindPage(space, ancestry[len(ancestry)-1])
page, err := api.FindPage(space, ancestry[len(ancestry)-1], "page")
if err != nil {
return nil, err
}

View File

@@ -163,7 +163,7 @@ func getConfluenceLink(api *confluence.API, space, title string) (string, error)
url.QueryEscape(title),
)
page, err := api.FindPage(space, title)
page, err := api.FindPage(space, title, "page")
if err != nil {
return "", karma.Format(err, "api: find page")
}

View File

@@ -13,7 +13,7 @@ func ResolvePage(
api *confluence.API,
meta *Meta,
) (*confluence.PageInfo, *confluence.PageInfo, error) {
page, err := api.FindPage(meta.Space, meta.Title)
page, err := api.FindPage(meta.Space, meta.Title, meta.Type)
if err != nil {
return nil, nil, karma.Format(
err,
@@ -22,6 +22,16 @@ func ResolvePage(
)
}
if meta.Type == "blogpost" {
log.Infof(
nil,
"Blog post will be stored as: %s",
meta.Title,
)
return nil, page, nil
}
ancestry := meta.Parents
if page != nil {
ancestry = append(ancestry, page.Title)

View File

@@ -13,6 +13,7 @@ import (
const (
HeaderParent = `Parent`
HeaderSpace = `Space`
HeaderType = `Type`
HeaderTitle = `Title`
HeaderLayout = `Layout`
HeaderAttachment = `Attachment`
@@ -23,6 +24,7 @@ const (
type Meta struct {
Parents []string
Space string
Type string
Title string
Layout string
Attachments map[string]string
@@ -67,6 +69,7 @@ func ExtractMeta(data []byte) (*Meta, []byte, error) {
if meta == nil {
meta = &Meta{}
meta.Type = "page" //Default if not specified
meta.Attachments = make(map[string]string)
}
@@ -84,6 +87,9 @@ func ExtractMeta(data []byte) (*Meta, []byte, error) {
case HeaderSpace:
meta.Space = strings.TrimSpace(value)
case HeaderType:
meta.Type = strings.TrimSpace(value)
case HeaderTitle:
meta.Title = strings.TrimSpace(value)