11import nodeFetch from 'node-fetch' ;
2- import queryString from 'query-string' ;
2+ import * as queryString from 'query-string' ;
33
44export namespace Qiita {
55
@@ -17,6 +17,30 @@ export namespace Qiita {
1717 user : User ;
1818 }
1919
20+ export interface AccessToken {
21+ /** 登録されたAPIクライアントを特定するためのIDです。40桁の16進数で表現されます。 */
22+ client_id : string ;
23+ /** アプリケーションが利用するスコープをスペース区切りで指定できます。 */
24+ scopes : string [ ] ;
25+ /** CSRF対策のため、認可後にリダイレクトするURLのクエリに含まれる値を指定できます。 */
26+ token : string ;
27+ }
28+
29+ export interface Group {
30+ /** データが作成された日時 */
31+ created_at : string ;
32+ /** グループの一意なIDを表します。 */
33+ id : number ;
34+ /** グループに付けられた表示用の名前を表します。 */
35+ name : string ;
36+ /** 非公開グループかどうかを表します。 */
37+ private : boolean ;
38+ /** データが最後に更新された日時 */
39+ updated_at : string ;
40+ /** グループのチーム上での一意な名前を表します。 */
41+ url_name : string ;
42+ }
43+
2044 export interface Comment {
2145 /** コメントの内容を表すMarkdown形式の文字列 */
2246 body : string ;
@@ -32,7 +56,72 @@ export namespace Qiita {
3256 user : User ;
3357 }
3458
35- interface User {
59+ export interface Tagging {
60+ /** タグを特定するための一意な名前 */
61+ name : string ;
62+ /** (説明無し) */
63+ versions : string [ ] ;
64+ }
65+
66+ export interface Tag {
67+ /** このタグをフォローしているユーザの数 */
68+ followers_count : number ;
69+ /** このタグに設定されたアイコン画像のURL */
70+ icon_url ?: string ;
71+ /** タグを特定するための一意な名前 */
72+ id : string ;
73+ /** このタグが付けられた投稿の数 */
74+ items_count : number ;
75+ }
76+
77+ export interface Team {
78+ /** チームが利用可能な状態かどうか */
79+ active : boolean ;
80+ /** チームの一意なID */
81+ id : string ;
82+ /** チームに設定されている名前を表します。 */
83+ name : string ;
84+ }
85+
86+ export interface Template {
87+ /** テンプレートの本文 */
88+ body : string ;
89+ /** テンプレートの一意なID */
90+ id : number ;
91+ /** テンプレートを判別するための名前 */
92+ name : string ;
93+ /** 変数を展開した状態の本文 */
94+ expanded_body : string ;
95+ /** 変数を展開した状態のタグ一覧 */
96+ expanded_tags : Tagging [ ] ;
97+ /** 変数を展開した状態のタイトル */
98+ expanded_title : string ;
99+ /** タグ一覧 */
100+ tags : Tagging [ ] ;
101+ /** 生成される投稿のタイトルの雛形 */
102+ title : string ;
103+ }
104+
105+ export interface Project {
106+ /** HTML形式の本文 */
107+ rendered_body : string ;
108+ /** このプロジェクトが進行中かどうか */
109+ archived : boolean ;
110+ /** Markdown形式の本文 */
111+ body : string ;
112+ /** データが作成された日時 */
113+ created_at : string ;
114+ /** プロジェクトのチーム上での一意なID */
115+ id : number ;
116+ /** プロジェクト名 */
117+ name : string ;
118+ /** 絵文字リアクション数 */
119+ reactions_count : number ;
120+ /** データが最後に更新された日時 */
121+ updated_at : string ;
122+ }
123+
124+ export interface User {
36125 /** 自己紹介文 */
37126 description ?: string ;
38127 /** Facebook ID */
@@ -65,6 +154,66 @@ export namespace Qiita {
65154 website_url ?: string ;
66155 }
67156
157+ export interface ExpandedTemplate {
158+ /** 変数を展開した状態の本文 */
159+ expanded_body : string ;
160+ /** 変数を展開した状態のタグ一覧 */
161+ expanded_tags : Tagging [ ] ;
162+ /** 変数を展開した状態のタイトル */
163+ expanded_title : string ;
164+ }
165+
166+ export interface Item {
167+ /** HTML形式の本文 */
168+ rendered_body : string ;
169+ /** Markdown形式の本文 */
170+ body : string ;
171+ /** この投稿が共同更新状態かどうか (Qiita:Teamでのみ有効) */
172+ coediting : boolean ;
173+ /** この投稿へのコメントの数 */
174+ comments_count : number ;
175+ /** データが作成された日時 */
176+ created_at : string ;
177+ /** Qiita:Teamのグループを表します。 */
178+ group : Group ;
179+ /** 投稿の一意なID */
180+ id : string ;
181+ /** この投稿への「いいね!」の数(Qiitaでのみ有効) */
182+ likes_count : number ;
183+ /** 限定共有状態かどうかを表すフラグ (Qiita:Teamでは無効) */
184+ private : boolean ;
185+ /** 投稿に付いたタグ一覧 */
186+ tags : Tagging [ ] ;
187+ /** 投稿のタイトル */
188+ title : string ;
189+ /** データが最後に更新された日時 */
190+ updated_at : string ;
191+ /** 投稿のURL */
192+ url : string ;
193+ /** Qiita上のユーザを表します。 */
194+ user : User ;
195+ /** 閲覧数 */
196+ page_views_count : number ;
197+ }
198+
199+ export interface TeamInvitation {
200+ /** 招待中のメンバーのemailアドレスです。 */
201+ email : string ;
202+ /** 招待用URLです。有効期限は1日です。 */
203+ url : string ;
204+ }
205+
206+ export interface Reaction {
207+ /** データが作成された日時 */
208+ created_at : string ;
209+ /** 絵文字画像のURL */
210+ image_url : string ;
211+ /** 絵文字の識別子 */
212+ name : string ;
213+ /** Qiita上のユーザを表します。 */
214+ user : User ;
215+ }
216+
68217 export interface AuthenticatedUser extends User {
69218 /** 1ヶ月あたりにQiitaにアップロードできる画像の総容量 */
70219 image_monthly_upload_limit : number ;
@@ -78,16 +227,16 @@ export namespace Qiita {
78227
79228export class Qiita {
80229
81- private token = '' ;
230+ private token = '' ;
82231 private endpoint = 'https://qiita.com' ;
83- private version = '/api/v2' ;
232+ private version = '/api/v2' ;
84233
85234 /**
86235 * Qiita APIにアクセスするためのトークンを設定します
87236 * @param token トークン文字列
88237 * @return 何も返しません
89238 */
90- public setToken ( token : string ) : void {
239+ public setToken ( token : string ) : void {
91240 this . token = token ;
92241 }
93242
@@ -96,7 +245,7 @@ export class Qiita {
96245 * @param endpoint エンドポイントへのURI
97246 * @return 何も返しません
98247 */
99- public setEndpoint ( endpoint : string ) : void {
248+ public setEndpoint ( endpoint : string ) : void {
100249 this . endpoint = endpoint ;
101250 }
102251
@@ -105,7 +254,7 @@ export class Qiita {
105254 * @param version APIへのパスの文字列 (e.g. `/api/v2`)
106255 * @return 何も返しません
107256 */
108- public setVersion ( version : string ) : void {
257+ public setVersion ( version : string ) : void {
109258 this . version = version ;
110259 }
111260
@@ -119,15 +268,15 @@ export class Qiita {
119268 private request = async ( url : string , options : any = { } ) : Promise < any > => {
120269 options = { ...options } ;
121270
122- if ( options . headers === undefined ) {
271+ if ( options . headers === undefined ) {
123272 options . headers = { } ;
124273 }
125274
126- if ( this . token ) {
275+ if ( this . token ) {
127276 options . headers [ 'Authorization' ] = `Bearer ${ this . token } ` ;
128277 }
129278
130- options . headers [ 'Content-Type' ] = 'application/json' ;
279+ options . headers [ 'Content-Type' ] = 'application/json' ;
131280
132281 try {
133282 let response : any ;
@@ -140,7 +289,7 @@ export class Qiita {
140289
141290 const data = await response . json ( ) ;
142291
143- if ( response . ok ) {
292+ if ( response . ok ) {
144293 return data
145294 } ;
146295
0 commit comments