view client.go @ 14:1e21b0c29775

remove create page msg
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Thu, 17 Dec 2020 11:12:04 +0900
parents 6da31576fa84
children
line wrap: on
line source

package growsync

import (
	"context"
	"errors"
	"fmt"
	"io/ioutil"

	"golang.org/x/xerrors"
	"www.cr.ie.u-ryukyu.ac.jp/hg/Members/anatofuz/growsync/client"
)

type growClient struct {
	client *client.Client
}

func NewGrowiClient(url, token string) (*growClient, error) {
	client, err := client.NewClient(client.Config{URL: url, Token: token})
	if err != nil {
		return nil, xerrors.Errorf("failed NweGrowiClient %+w", err)
	}
	gClient := growClient{
		client: client,
	}
	return &gClient, nil
}

func (gClient *growClient) IsExistsPageOnGrowi(path string) (*client.Page, error) {
	ctx := context.Background()
	page, err := gClient.client.Pages.Get(ctx, path)

	if errors.Is(err, client.ErrorPageNotFOund) {
		return nil, nil
	}

	if err != nil {
		return nil, xerrors.Errorf("failed isExistsPageOnGrowi at %+w", err)
	}
	return page, nil
}

func (gClient *growClient) CreateNewPage(path string, mdPATH string) error {
	ctx := context.Background()
	markdown, err := ioutil.ReadFile(mdPATH)
	if err != nil {
		return xerrors.Errorf("failed read %s file %+w", mdPATH, err)
	}
	_, err = gClient.client.Pages.Create(ctx, path, string(markdown))
	return err
}

func (gClient *growClient) UpdatePage(path string, mdPATH string) error {
	ctx := context.Background()
	markdown, err := ioutil.ReadFile(mdPATH)
	if err != nil {
		return xerrors.Errorf("failed read %s file %+w", mdPATH, err)
	}

	page, err := gClient.IsExistsPageOnGrowi(path)

	if err != nil {
		return err
	}

	if page == nil {
		fmt.Println("[info] create new page", mdPATH)
		// WIP create directory
		return gClient.CreateNewPage(path, mdPATH)
	}

	_, err = gClient.client.Pages.Update(ctx, page.ID, page.Revision.ID, string(markdown))
	return err
}