オープンソースの社内WikiであるGROWIではREST APIが公開されています。このAPIをより簡単に使えるよう、TypeScript/JavaScript SDKを開発しています。まだ途中ですが、徐々に機能追加していきます。
今回はページをブックマークして置く際に利用するブックマークとブックマークフォルダの操作方法を解説します。
注意点
こちらはコミュニティSDKになります。公式への問い合わせはご遠慮ください。
ソースコード
GROWI TypeScript/JavaScript SDKのソースコードはGitHubにて公開しています。ライセンスはMITです。
インストール
インストールはnpm/yarn経由で行います。
$ npm install @goofmint/growi-js
# または
$ yarn add @goofmint/growi-js
使い方
まずはSDKをインポートします。
const { GROWI, UserGroup } = require('@goofmint/growi-js');
// または
import { GROWI, UserGroup } from '@goofmint/growi-js';
そして、初期化します。この時、GROWIのAPIトークンを指定します。
const growi = new GROWI({ apiToken: 'your-api-token' });
この他、以下のパラメーターを用意しています。
-
url
: GROWIのURLを指定します。デフォルトはhttp://localhost:3000
です。 -
path
: GROWIのページパスを指定します。デフォルトは `` です。サブディレクトリにインストールしている際に指定します。
現在のユーザーを取得
ブックマークの取得などでユーザー情報を利用するので、 currentUser
メソッドで現在のユーザーを取得します。
const user = await growi.currentUser();
ブックマークフォルダ
ブックマークフォルダの取得
現在のブックマークフォルダを取得します。配列で返ってきます。
const bookmarkFolders = await user.bookmarkFolders();
ブックマークフォルダの作成
新しいブックマークフォルダを作成します。名前を付けて、 save
メソッドで保存します。
const bookmarkFolder = new BookmarkFolder();
bookmarkFolder.name = 'my folder';
await bookmarkFolder.save();
ブックマークフォルダの更新
名前を変更する場合は、 name
プロパティを変更して、新規作成と同じく save
メソッドで保存します。
bookmarkFolder.name = 'my folder updated';
await bookmarkFolder.save();
ブックマークフォルダの削除
remove
メソッドで削除します。子フォルダも削除されます。
await bookmarkFolder.remove();
ブックマークフォルダを親フォルダに追加
ブックマークフォルダは入れ子にできます。この時、やり方は2通りあります。
まずは、親フォルダを指定して保存する方法です。
// 親フォルダを作成
const bookmarkFolder = new BookmarkFolder();
bookmarkFolder.name = 'Parent';
await bookmarkFolder.save();
// 子フォルダを作成
const bookmarkFolder2 = new BookmarkFolder();
bookmarkFolder2.name = 'Child';
bookmarkFolder2.parent = bookmarkFolder; // 親フォルダを指定
await bookmarkFolder2.save();
または、 addFolder
メソッドを使って追加する方法です。
const bookmarkFolder = new BookmarkFolder();
bookmarkFolder.name = 'Parent';
const bookmarkFolder2 = new BookmarkFolder();
bookmarkFolder2.name = 'Child';
await bookmarkFolder.addFolder(bookmarkFolder2); // 親フォルダに追加
親フォルダを変更する
フォルダを移動する際には、 parent
プロパティを変更して、 save
メソッドで保存します。
const bookmarkFolder3 = new BookmarkFolder();
bookmarkFolder3.name = 'New parent';
bookmarkFolder2.parent = bookmarkFolder3; // 親フォルダを変更
await bookmarkFolder2.save();
ブックマークフォルダの情報を取得
親フォルダを変更した際など、情報を更新したい際には fetch
メソッドを使います。
await bookmarkFolder.fetch();
ブックマーク
自分のブックマークを取得
自分のブックマークは bookmarks
メソッドで取得します。
const bookmarks = await user.bookmarks();
ページに紐付いたブックマーク情報を取得
自分がブックマークしているかどうか、ブックマークしているユーザー一覧などの情報を取得します。
const page = await growi.root();
const info = await page.bookmarkInfo();
info.bookmarkCount // ブックマーク数
info.bookmarked // 自分がブックマークしているかどうか
info.users // ブックマークしているユーザー一覧
ブックマークする
ページを指定してブックマークします。
await user.bookmark(page); // ブックマーク
ブックマークを解除
ブックマークを解除します。2つ目の引数に false
を指定します。
await user.bookmark(page, false); // ブックマーク解除
ブックマークしているかどうか
自分がブックマークしているかどうかを確認します。
const bol = await user.isBookmarked(page);
ブックマークフォルダに追加
ブックマークをフォルダに追加する際には、 addPage
メソッドを使います。
const folder = new BookmarkFolder();
folder.name = 'my folder';
await folder.save();
await folder.addPage(page);
まとめ
GROWIは社内Wikiとして、社内システムとのデータ連係ニーズが出やすいでしょう。ぜひ、Node.js SDKを使って、GROWIをシステムから操作してください。