Skip to content

Commit e6dc9da

Browse files
committed
ドキュメントに記載されているすべてのエンティティをインターフェイスとして追加
1 parent 8ff7da1 commit e6dc9da

File tree

1 file changed

+160
-11
lines changed

1 file changed

+160
-11
lines changed

src/qiita.ts

Lines changed: 160 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import nodeFetch from 'node-fetch';
2-
import queryString from 'query-string';
2+
import * as queryString from 'query-string';
33

44
export 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

79228
export 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

Comments
 (0)