diff options
Diffstat (limited to '')
| -rw-r--r-- | src/web/docs/api/endpoints/gulpfile.ts | 75 | ||||
| -rw-r--r-- | src/web/docs/api/endpoints/posts/create.yaml (renamed from docs/api/endpoints/posts/create.yaml) | 13 | ||||
| -rw-r--r-- | src/web/docs/api/endpoints/style.styl | 16 | ||||
| -rw-r--r-- | src/web/docs/api/endpoints/view.pug | 60 | ||||
| -rw-r--r-- | src/web/docs/api/entities/post.pug (renamed from src/docs/api/entities/post.pug) | 0 | ||||
| -rw-r--r-- | src/web/docs/api/entities/user.pug (renamed from src/docs/api/entities/user.pug) | 0 | ||||
| -rw-r--r-- | src/web/docs/api/getting-started.md (renamed from src/docs/api/getting-started.md) | 0 | ||||
| -rw-r--r-- | src/web/docs/api/library.md (renamed from src/docs/api/library.md) | 0 |
8 files changed, 158 insertions, 6 deletions
diff --git a/src/web/docs/api/endpoints/gulpfile.ts b/src/web/docs/api/endpoints/gulpfile.ts new file mode 100644 index 0000000000..a2c3944709 --- /dev/null +++ b/src/web/docs/api/endpoints/gulpfile.ts @@ -0,0 +1,75 @@ +/** + * Gulp tasks + */ + +import * as fs from 'fs'; +import * as path from 'path'; +import * as glob from 'glob'; +import * as gulp from 'gulp'; +import * as pug from 'pug'; +import * as yaml from 'js-yaml'; +import * as mkdirp from 'mkdirp'; + +import config from './../../../../conf'; + +const parseParam = param => { + const id = param.type.match(/^id\((.+?)\)/); + const object = param.type.match(/^object\((.+?)\)/); + const isArray = /\[\]$/.test(param.type); + if (id) { + param.kind = 'id'; + param.type = 'string'; + param.entity = id[1]; + if (isArray) { + param.type += '[]'; + } + } + if (object) { + param.kind = 'object'; + param.type = 'object'; + param.def = object[1]; + if (isArray) { + param.type += '[]'; + } + } + + return param; +}; + +gulp.task('doc:endpoints', () => { + glob('./src/web/docs/api/endpoints/**/*.yaml', (globErr, files) => { + if (globErr) { + console.error(globErr); + return; + } + //console.log(files); + files.forEach(file => { + const ep = yaml.safeLoad(fs.readFileSync(file, 'utf-8')); + const vars = { + endpoint: ep.endpoint, + url: `${config.api_url}/${ep.endpoint}`, + desc: ep.desc, + params: ep.params.map(p => parseParam(p)), + paramDefs: Object.keys(ep.paramDefs).map(key => ({ + name: key, + params: ep.paramDefs[key].map(p => parseParam(p)) + })), + res: ep.res.map(p => parseParam(p)) + }; + pug.renderFile('./src/web/docs/api/endpoints/view.pug', vars, (renderErr, html) => { + if (renderErr) { + console.error(renderErr); + return; + } + const htmlPath = `./built/web/docs/api/endpoints/${ep.endpoint}.html`; + mkdirp(path.dirname(htmlPath), (mkdirErr) => { + if (mkdirErr) { + console.error(mkdirErr); + return; + } + fs.writeFileSync(htmlPath, html, 'utf-8'); + }); + }); + }); + }); +}); diff --git a/docs/api/endpoints/posts/create.yaml b/src/web/docs/api/endpoints/posts/create.yaml index db91775cb6..b6613038a7 100644 --- a/docs/api/endpoints/posts/create.yaml +++ b/src/web/docs/api/endpoints/posts/create.yaml @@ -7,31 +7,31 @@ desc: params: - name: "text" type: "string" - required: true + optional: false desc: ja: "投稿の本文" en: "Text of a post" - name: "media_ids" type: "id(DriveFile)[]" - required: false + optional: true desc: ja: "添付するメディア" en: "Media you want to attach" - name: "reply_id" type: "id(Post)" - required: false + optional: true desc: ja: "返信する投稿" en: "A post you want to reply" - name: "repost_id" type: "id(Post)" - required: false + optional: true desc: ja: "引用する投稿" en: "A post you want to quote" - name: "poll" type: "object(poll)" - required: false + optional: true desc: ja: "投票" en: "A poll" @@ -40,7 +40,7 @@ paramDefs: poll: - name: "choices" type: "string[]" - required: true + optional: false desc: ja: "投票の選択肢" en: "Choices of a poll" @@ -48,6 +48,7 @@ paramDefs: res: - name: "created_post" type: "entity(Post)" + optional: false desc: ja: "作成した投稿" en: "A post that created" diff --git a/src/web/docs/api/endpoints/style.styl b/src/web/docs/api/endpoints/style.styl new file mode 100644 index 0000000000..12c06fe3af --- /dev/null +++ b/src/web/docs/api/endpoints/style.styl @@ -0,0 +1,16 @@ +@import "../../style" + +#url + padding 8px 12px + font-family Consolas, 'Courier New', Courier, Monaco, monospace + color #fff + background #222e40 + border-radius 4px + +table + .name + font-weight bold + + .type + font-family Consolas, 'Courier New', Courier, Monaco, monospace + diff --git a/src/web/docs/api/endpoints/view.pug b/src/web/docs/api/endpoints/view.pug new file mode 100644 index 0000000000..d9de9cb74a --- /dev/null +++ b/src/web/docs/api/endpoints/view.pug @@ -0,0 +1,60 @@ +doctype html + +mixin i18n(xs) + each text, lang in xs + span(class=`i18n ${lang}`)= text + +mixin table(params) + table + thead: tr + th Name + th Type + th Optional + th Description + tbody + each param in params + tr + td.name= param.name + td.type + if param.kind == 'id' + | #{param.type} (ID of + = ' ' + a(href=`/docs/api/entities/${param.entity}`)= param.entity + | ) + else if param.kind == 'object' + | #{param.type} ( + a(href=`#${param.def}`)= param.def + | ) + else + = param.type + td.optional= param.optional.toString() + td.desc: +i18n(param.desc) + +html + head + meta(charset="UTF-8") + title #{endpoint} | Misskey API + link(rel="stylesheet" href="/assets/docs/api/endpoints/style.css") + + body + main + h1= endpoint + + p#url= url + + p#desc: +i18n(desc) + + section + h2 Params + +table(params) + + if paramDefs + each paramDef in paramDefs + section(id= paramDef.name) + h3= paramDef.name + +table(paramDef.params) + + section + h2 Response + +table(res) + diff --git a/src/docs/api/entities/post.pug b/src/web/docs/api/entities/post.pug index 954f172717..954f172717 100644 --- a/src/docs/api/entities/post.pug +++ b/src/web/docs/api/entities/post.pug diff --git a/src/docs/api/entities/user.pug b/src/web/docs/api/entities/user.pug index a37886bb19..a37886bb19 100644 --- a/src/docs/api/entities/user.pug +++ b/src/web/docs/api/entities/user.pug diff --git a/src/docs/api/getting-started.md b/src/web/docs/api/getting-started.md index e13659914e..e13659914e 100644 --- a/src/docs/api/getting-started.md +++ b/src/web/docs/api/getting-started.md diff --git a/src/docs/api/library.md b/src/web/docs/api/library.md index 71ddbe345d..71ddbe345d 100644 --- a/src/docs/api/library.md +++ b/src/web/docs/api/library.md |