0
0

GROWI TypeScript/JavaScript SDKの紹介(その3:添付ファイルの操作)

Posted at

オープンソースの社内WikiであるGROWIではREST APIが公開されています。このAPIをより簡単に使えるよう、TypeScript/JavaScript SDKを開発しています。まだ途中ですが、徐々に機能追加していきます。

今回は添付ファイルの操作方法を解説します。

注意点

こちらはコミュニティSDKになります。公式への問い合わせはご遠慮ください。

ソースコード

GROWI TypeScript/JavaScript SDKのソースコードはGitHubにて公開しています。ライセンスはMITです。

goofmint/growi-sdk-alpha

インストール

インストールは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をシステムから操作してください。

OSS開発wikiツールのGROWI | 快適な情報共有を、全ての人へ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0