scrapbox-api.js
環境
Denoとweb browserを前提に考えているが、Node.jsからも使えるようにはしたい
設計
networkとの通信
defaultでfetchを使うが、設定から変えられるようにもする
エラー処理
全部throwする
ちょっと迷ってきたtakker.icon
ページが存在しないとか、projectが存在しないとかは、エラーではなく引数で返したほうがいいのかなあ
そっちのほうが親切な気もする
それにエラーは想定外の事態に対して投げるべきで、それ以外のことでは投げないほうがいいはず
こっちの方針に変更した
あー、でもprojectやページの存在を別の関数で予め確認させるようにすれば、全部例外として処理しちゃっても問題なくなるのか?
Deno.mkdir()みたいな感じで
各種APIとmethodとの対応
とりあえず適当に決めてみたtakker.icon
基本方針
URL path parametersは関数の引数に入れ込む
APIの階層構造はなるべく維持する
特定のprojectに関する情報取得がpages、複数のprojectの情報取得がprojectsなのかなあ
……ということでもなさそう
pagesがページに関する情報、projectsがprojectに関する情報、といったところか?
ページの情報を取得する
pages.get()
pages.getTableBlock()
pages.getCodeBlock()
pages.getIcon()
Blobで返す
pages.links.list()
projectの方があっていると思うのだが、URL pathに合わせておく
pages.links.replace()
pageSnapshots.get()
commits.get()
ページ名から取得できるver.も用意しておいても良いかも
全文検索
pages.search()
projects.search()
watch listかどうかは引数で区別するか
指定したprojectからなら所属しているかどうかによらずに検索するoptionをつけてもいいかも
Projectの情報を取得する
pages.list()
projects.get()
projects.set()
projects.delete()
stream.get()
projects.notifications.list()
projects.notifications.set()
projects.notifications.remove()
projects.invitations.get()
projects.invitations.reset()
projectBackup.list()
projectBackup.get()
projects.list()
projects.create()
importとexport
pageData.import()
pageData.export()
Userの情報を取得する
users.get()
users.set()
gcs.get()
Node.js.icon
Deno.icon