@@ -22,22 +22,21 @@ export class Qiita extends Gateway {
2222 * @param url リクエストするURL
2323 * @param params リクエストのオプション
2424 */
25- public async * paginationGenerator < T extends T [ ] > ( url : string , params ?: any ) : AsyncIterableIterator < T > {
25+ public async * paginationGenerator < T extends any [ ] > ( url : string , params ?: any ) {
2626 // Qiitaのページネーションインデックスは1から始まります
27- let nextPage = 1 ;
27+ let page = 1 ;
2828
2929 while ( true ) {
30- const data = await this . get < T > ( url , params ) ;
30+ const data = await this . get < T > ( url , { ... params , page } ) ;
3131 const result : T | 'reset' = yield data ;
3232
3333 if ( result === 'reset' ) {
34- nextPage = 1 ;
34+ page = 1 ;
3535 } else {
36- nextPage ++ ;
36+ page ++ ;
3737
38- // Qiita APIの最大ページネーション値 (100) か
3938 // レスポンスの配列の長さがない場合にイテレーターを終了します。
40- if ( nextPage > 100 || ! data . length ) {
39+ if ( ! data . length ) {
4140 break ;
4241 }
4342 }
@@ -129,10 +128,10 @@ export class Qiita extends Gateway {
129128 * @param page ページ番号 (1から100まで)
130129 * @param perPage 1ページあたりに含まれる要素数 (1から100まで)
131130 * @param sort 並び順 (countで投稿数順、nameで名前順)
132- * @return タグ一覧
131+ * @return タグ一覧を返す非同期反復可能オブジェクト
133132 */
134- public fetchTags = ( page : string , perPage : string , sort : string ) : AsyncIterableIterator < Tag [ ] > => {
135- return this . paginationGenerator ( `${ this . url } ${ this . version } /tags` , {
133+ public fetchTags = ( page : string , perPage : string , sort : string ) => {
134+ return this . paginationGenerator < Tag [ ] > ( `${ this . url } ${ this . version } /tags` , {
136135 page,
137136 per_page : perPage ,
138137 sort,
@@ -180,10 +179,10 @@ export class Qiita extends Gateway {
180179 * @param tagId タグID
181180 * @param page ページ番号 (1から100まで)
182181 * @param perPage 1ページあたりに含まれる要素数 (1から100まで)
183- * @return 投稿一覧
182+ * @return 投稿一覧を返す非同期反復可能オブジェクト
184183 */
185- public fetchTaggedItems = ( tagId : string , page : string , perPage : string ) : Promise < Item [ ] > => {
186- return this . get ( `${ this . url } ${ this . version } /tags/${ tagId } ` , {
184+ public fetchTaggedItems = ( tagId : string , page : string , perPage : string ) => {
185+ return this . paginationGenerator < Item [ ] > ( `${ this . url } ${ this . version } /tags/${ tagId } ` , {
187186 page,
188187 per_page : perPage ,
189188 } ) ;
@@ -193,10 +192,10 @@ export class Qiita extends Gateway {
193192 * チーム内のテンプレート一覧を返します。
194193 * @param page ページ番号 (1から100まで)
195194 * @param perPage 1ページあたりに含まれる要素数 (1から100まで)
196- * @return テンプレート一覧
195+ * @return テンプレート一覧を返す非同期反復可能オブジェクト
197196 */
198- public fetchTemplates = ( page : string , perPage : string ) : Promise < Template [ ] > => {
199- return this . get ( `${ this . url } ${ this . version } /templates` , {
197+ public fetchTemplates = ( page : string , perPage : string ) => {
198+ return this . paginationGenerator < Template [ ] > ( `${ this . url } ${ this . version } /templates` , {
200199 page,
201200 per_page : perPage ,
202201 } ) ;
@@ -250,8 +249,8 @@ export class Qiita extends Gateway {
250249 * @param perPage 1ページあたりに含まれる要素数 (1から100まで)
251250 * @return プロジェクト一覧
252251 */
253- public fetchProjects = ( page : string , perPage : string ) : Promise < Project [ ] > => {
254- return this . get ( `${ this . url } ${ this . version } /projects` , {
252+ public fetchProjects = ( page : string , perPage : string ) => {
253+ return this . paginationGenerator < Project [ ] > ( `${ this . url } ${ this . version } /projects` , {
255254 page,
256255 per_page : perPage ,
257256 } ) ;
@@ -351,10 +350,10 @@ export class Qiita extends Gateway {
351350 * 全てのユーザの一覧を作成日時の降順で取得します。
352351 * @param page ページ番号 (1から100まで)
353352 * @param perPage 1ページあたりに含まれる要素数 (1から100まで)
354- * @return ユーザー一覧
353+ * @return ユーザー一覧を返す非同期反復可能オブジェクト
355354 */
356- public fetchUsers = ( page : string , perPage : string ) : Promise < User [ ] > => {
357- return this . get ( `${ this . url } ${ this . version } /users` , {
355+ public fetchUsers = ( page : string , perPage : string ) => {
356+ return this . paginationGenerator < User [ ] > ( `${ this . url } ${ this . version } /users` , {
358357 page,
359358 per_page : perPage ,
360359 } ) ;
@@ -374,10 +373,10 @@ export class Qiita extends Gateway {
374373 * @param userId ユーザーID
375374 * @param page ページ番号 (1から100まで)
376375 * @param perPage 1ページあたりに含まれる要素数 (1から100まで)
377- * @return ユーザー一覧
376+ * @return ユーザー一覧を返す非同期反復可能オブジェクト
378377 */
379- public fetchUserFollowees = ( userId : string , page : string , perPage : string ) : Promise < User [ ] > => {
380- return this . get ( `${ this . url } ${ this . version } /users/${ userId } /followees` , {
378+ public fetchUserFollowees = ( userId : string , page : string , perPage : string ) => {
379+ return this . paginationGenerator < User [ ] > ( `${ this . url } ${ this . version } /users/${ userId } /followees` , {
381380 page,
382381 per_page : perPage ,
383382 } ) ;
@@ -388,10 +387,10 @@ export class Qiita extends Gateway {
388387 * @param userId ユーザーID
389388 * @param page ページ番号 (1から100まで)
390389 * @param perPage 1ページあたりに含まれる要素数 (1から100まで)
391- * @return ユーザー一覧
390+ * @return ユーザー一覧を返す非同期反復可能オブジェクト
392391 */
393- public fetchUserFollowers = ( userId : string , page : string , perPage : string ) : Promise < User [ ] > => {
394- return this . get ( `${ this . url } ${ this . version } /users/${ userId } /followers` , {
392+ public fetchUserFollowers = ( userId : string , page : string , perPage : string ) => {
393+ return this . paginationGenerator < User [ ] > ( `${ this . url } ${ this . version } /users/${ userId } /followers` , {
395394 page,
396395 per_page : perPage ,
397396 } ) ;
@@ -402,10 +401,10 @@ export class Qiita extends Gateway {
402401 * @param userId ユーザID
403402 * @param page ページ番号 (1から100まで)
404403 * @param perPage 1ページあたりに含まれる要素数 (1から100まで)
405- * @return 投稿一覧
404+ * @return 投稿一覧を返す非同期反復可能オブジェクト
406405 */
407- public fetchUserItems = ( userId : string , page : string , perPage : string ) : Promise < Item [ ] > => {
408- return this . get ( `${ this . url } ${ this . version } /users/${ userId } /items` , {
406+ public fetchUserItems = ( userId : string , page : string , perPage : string ) => {
407+ return this . paginationGenerator < Item [ ] > ( `${ this . url } ${ this . version } /users/${ userId } /items` , {
409408 page,
410409 per_page : perPage ,
411410 } ) ;
@@ -416,10 +415,10 @@ export class Qiita extends Gateway {
416415 * @param userId ユーザID
417416 * @param page ページ番号 (1から100まで)
418417 * @param perPage 1ページあたりに含まれる要素数 (1から100まで)
419- * @return 投稿一覧
418+ * @return 投稿一覧を返す非同期反復可能オブジェクト
420419 */
421- public fetchUserStocks = ( userId : string , page : string , perPage : string ) : Promise < Item [ ] > => {
422- return this . get ( `${ this . url } ${ this . version } /users/${ userId } /items` , {
420+ public fetchUserStocks = ( userId : string , page : string , perPage : string ) => {
421+ return this . paginationGenerator < Item [ ] > ( `${ this . url } ${ this . version } /users/${ userId } /items` , {
423422 page,
424423 per_page : perPage ,
425424 } ) ;
@@ -430,10 +429,10 @@ export class Qiita extends Gateway {
430429 * @param userId ユーザーID
431430 * @param page ページ番号 (1から100まで)
432431 * @param perPage 1ページあたりに含まれる要素数 (1から100まで)
433- * @return タグ一覧
432+ * @return タグ一覧を返す非同期反復可能オブジェクト
434433 */
435- public fetchUserFollowingTags = ( userId : string , page : string , perPage : string ) : Promise < Tag [ ] > => {
436- return this . get ( `${ this . url } ${ this . version } /users/${ userId } /following_tags` , {
434+ public fetchUserFollowingTags = ( userId : string , page : string , perPage : string ) => {
435+ return this . paginationGenerator < Tag [ ] > ( `${ this . url } ${ this . version } /users/${ userId } /following_tags` , {
437436 page,
438437 per_page : perPage ,
439438 } ) ;
@@ -471,10 +470,10 @@ export class Qiita extends Gateway {
471470 * @param page ページ番号 (1から100まで)
472471 * @param perPage 1ページあたりに含まれる要素数 (1から100まで)
473472 * @param query 検索クエリ
474- * @return 投稿一覧
473+ * @return 投稿一覧を返す非同期反復可能オブジェクト
475474 */
476- public fetchItems = ( page : string , perPage : string , query : string ) : Promise < Item [ ] > => {
477- return this . get ( `${ this . url } ${ this . version } /items` , {
475+ public fetchItems = ( page : string , perPage : string , query : string ) => {
476+ return this . paginationGenerator < Item [ ] > ( `${ this . url } ${ this . version } /items` , {
478477 page,
479478 per_page : perPage ,
480479 query,
@@ -657,10 +656,10 @@ export class Qiita extends Gateway {
657656 * 投稿をストックしているユーザ一覧を、ストックした日時の降順で返します。
658657 * @param page ページ番号 (1から100まで)
659658 * @param perPage 1ページあたりに含まれる要素数 (1から100まで)
660- * @return ユーザー一覧
659+ * @return ユーザー一覧を返す非同期反復可能オブジェクト
661660 */
662- public fetchItemStockers = ( itemId : string , page : string , perPage : string ) : Promise < User [ ] > => {
663- return this . get ( `${ this . url } ${ this . version } /items/${ itemId } /stockers` , {
661+ public fetchItemStockers = ( itemId : string , page : string , perPage : string ) => {
662+ return this . paginationGenerator < User [ ] > ( `${ this . url } ${ this . version } /items/${ itemId } /stockers` , {
664663 page,
665664 per_page : perPage ,
666665 } ) ;
@@ -749,10 +748,10 @@ export class Qiita extends Gateway {
749748 * 認証中のユーザの投稿の一覧を作成日時の降順で返します。
750749 * @param page ページ番号 (1から100まで)
751750 * @param perPage 1ページあたりに含まれる要素数 (1から100まで)
752- * @return 投稿一覧
751+ * @return 投稿一覧を返す非同期反復可能オブジェクト
753752 */
754- public fetchMyItems = ( page : string , perPage : string ) : Promise < Item [ ] > => {
755- return this . get ( `${ this . url } ${ this . version } /authenticated_user/items` , {
753+ public fetchMyItems = ( page : string , perPage : string ) => {
754+ return this . paginationGenerator < Item [ ] > ( `${ this . url } ${ this . version } /authenticated_user/items` , {
756755 page,
757756 per_page : perPage ,
758757 } ) ;
0 commit comments