save page title

This commit is contained in:
Egor Kovetskiy 2015-09-19 23:58:27 +06:00
parent 95b55bf310
commit f927165a26

34
main.go
View File

@ -36,7 +36,8 @@ Options:
` `
) )
type ResponseContent struct { type PageInfo struct {
Title string `json:"title"`
Version struct { Version struct {
Number int64 `json:"number"` Number int64 `json:"number"`
} `json:"version"` } `json:"version"`
@ -110,12 +111,12 @@ func main() {
log.Fatal("URL should contains 'pageId' parameter") log.Fatal("URL should contains 'pageId' parameter")
} }
version, err := getPageVersion(api, pageID) pageInfo, err := getPageInfo(api, pageID)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
err = updatePage(api, pageID, version, htmlData) err = updatePage(api, pageID, pageInfo, htmlData)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
@ -125,13 +126,14 @@ func main() {
func updatePage( func updatePage(
api *gopencils.Resource, pageID string, api *gopencils.Resource, pageID string,
currentPageVersion int64, newContent []byte, pageInfo PageInfo, newContent []byte,
) error { ) error {
nextPageVersion := currentPageVersion + 1 nextPageVersion := pageInfo.Version.Number + 1
payload := map[string]interface{}{ payload := map[string]interface{}{
"id": pageID, "id": pageID,
"type": "page", "type": "page",
"title": pageInfo.Title,
"version": map[string]interface{}{ "version": map[string]interface{}{
"number": nextPageVersion, "number": nextPageVersion,
"minorEdit": false, "minorEdit": false,
@ -161,33 +163,35 @@ func updatePage(
return nil return nil
} }
func getPageVersion(api *gopencils.Resource, pageID string) (int64, error) { func getPageInfo(
request, err := api.Res("content/"+pageID, &ResponseContent{}).Get() api *gopencils.Resource, pageID string,
) (PageInfo, error) {
request, err := api.Res("content/"+pageID, &PageInfo{}).Get()
if err != nil { if err != nil {
return 0, err return PageInfo{}, err
} }
if request.Raw.StatusCode == 401 { if request.Raw.StatusCode == 401 {
return 0, fmt.Errorf("authentification failed") return PageInfo{}, fmt.Errorf("authentification failed")
} }
if request.Raw.StatusCode == 404 { if request.Raw.StatusCode == 404 {
return 0, fmt.Errorf( return PageInfo{}, fmt.Errorf(
"page with id '%s' not found, Confluence REST API returns 404", "page with id '%s' not found, Confluence REST API returns 404",
pageID, pageID,
) )
} }
if request.Raw.StatusCode != 200 { if request.Raw.StatusCode != 200 {
return 0, fmt.Errorf( return PageInfo{}, fmt.Errorf(
"Confluence REST API returns unexpected HTTP status: %s", "Confluence REST API returns unexpected HTTP status: %s",
request.Raw.Status, request.Raw.Status,
) )
} }
response := request.Response.(*ResponseContent) response := request.Response.(*PageInfo)
return response.Version.Number, nil return *response, nil
} }
func getConfig(path string) (zhash.Hash, error) { func getConfig(path string) (zhash.Hash, error) {