オープンソースの社内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 } = require('@goofmint/growi-js');
// または
import { GROWI } from '@goofmint/growi-js';
そして、初期化します。この時、GROWIのAPIトークンを指定します。
const growi = new GROWI({ apiToken: 'your-api-token' });
この他、以下のパラメーターを用意しています。
-
url
: GROWIのURLを指定します。デフォルトはhttp://localhost:3000
です。 -
path
: GROWIのページパスを指定します。デフォルトは `` です。サブディレクトリにインストールしている際に指定します。
ページの取得
添付ファイルはページに紐づいているので、まずはページを取得します。ルートからのページ取得は、以下のように実行します。返ってくるのは Page
オブジェクトです。
const page = await growi.root();
ページ名指定での取得
ページ名(パス)が分かっている場合には、 page
メソッドを使います。
const page = await growi.page({path: '/ページ名'});
添付ファイルをアップロード
添付ファイルは upload
メソッドを使います。一番簡単なのは、ファイルのパスを指定する方法です。
const fileName = 'logo.png';
const attachment = await page.upload(path.resolve("path", "to", fileName));
取得した後、 attachment.filePathProxied
で画像のURLが取得できます。以下のように本文に追加できます。
page.set('body', `${page.body}\n\n![](${attachment.filePathProxied})`);
添付ファイルの一覧取得
list
メソッドを使って、添付ファイルの一覧を取得できます。
const res = await Attachment.list(page);
res.attachments // array of Attachment instances
res.limit // 10
res.page // 1
res.totalDocs // 20
ファイルアップロードできるかチェック
ファイルサイズを指定して、アップロード可能かどうかをチェックできます。なお、GROWIのデフォルト値はサイズ無制限です。
const bol = await Attachment.limit(1024 * 1024 * 10);
bol // true
添付ファイルの取得
添付ファイルを取得する際には、添付ファイルのIDを指定して find
メソッドを使います。
const a = await Attachment.find(id);
a // Attachment instance
まとめ
GROWIは社内Wikiとして、社内システムとのデータ連係ニーズが出やすいでしょう。ぜひ、Node.js SDKを使って、GROWIをシステムから操作してください。