@@ -21,6 +21,16 @@ export type NarouParams =
2121 | RankingHistoryParams
2222 | UserSearchParams ;
2323
24+ /**
25+ * なろう小説APIへのリクエストオプション
26+ */
27+ export interface ExecuteOptions {
28+ /**
29+ * fetch関数のオプション
30+ */
31+ fetchOptions ?: RequestInit ;
32+ }
33+
2434/**
2535 * なろう小説APIへのリクエストを実行する
2636 * @class NarouNovel
@@ -35,7 +45,8 @@ export default abstract class NarouNovel {
3545 */
3646 protected abstract execute < T > (
3747 params : NarouParams ,
38- endpoint : string
48+ endpoint : string ,
49+ options ?: ExecuteOptions
3950 ) : Promise < T > ;
4051
4152 /**
@@ -46,9 +57,13 @@ export default abstract class NarouNovel {
4657 */
4758 protected async executeSearch < T extends keyof NarouSearchResult > (
4859 params : SearchParams ,
49- endpoint = "https://api.syosetu.com/novelapi/api/"
60+ endpoint = "https://api.syosetu.com/novelapi/api/" ,
61+ options ?: ExecuteOptions
5062 ) : Promise < NarouSearchResults < NarouSearchResult , T > > {
51- return new NarouSearchResults ( await this . execute ( params , endpoint ) , params ) ;
63+ return new NarouSearchResults (
64+ await this . execute ( params , endpoint , options ) ,
65+ params
66+ ) ;
5267 }
5368
5469 /**
@@ -58,11 +73,13 @@ export default abstract class NarouNovel {
5873 * @see https://dev.syosetu.com/man/api/
5974 */
6075 async executeNovel < T extends keyof NarouSearchResult > (
61- params : SearchParams
76+ params : SearchParams ,
77+ options ?: ExecuteOptions
6278 ) : Promise < NarouSearchResults < NarouSearchResult , T > > {
6379 return await this . executeSearch (
6480 params ,
65- "https://api.syosetu.com/novelapi/api/"
81+ "https://api.syosetu.com/novelapi/api/" ,
82+ options
6683 ) ;
6784 }
6885
@@ -73,11 +90,13 @@ export default abstract class NarouNovel {
7390 * @see https://dev.syosetu.com/xman/api/
7491 */
7592 async executeNovel18 < T extends keyof NarouSearchResult > (
76- params : SearchParams
93+ params : SearchParams ,
94+ options ?: ExecuteOptions
7795 ) : Promise < NarouSearchResults < NarouSearchResult , T > > {
7896 return await this . executeSearch (
7997 params ,
80- "https://api.syosetu.com/novel18api/api/"
98+ "https://api.syosetu.com/novel18api/api/" ,
99+ options
81100 ) ;
82101 }
83102
@@ -87,20 +106,33 @@ export default abstract class NarouNovel {
87106 * @returns ランキング結果
88107 * @see https://dev.syosetu.com/man/rankapi/
89108 */
90- async executeRanking ( params : RankingParams ) : Promise < NarouRankingResult [ ] > {
91- return await this . execute ( params , "https://api.syosetu.com/rank/rankget/" ) ;
109+ async executeRanking (
110+ params : RankingParams ,
111+ options ?: ExecuteOptions
112+ ) : Promise < NarouRankingResult [ ] > {
113+ return await this . execute (
114+ params ,
115+ "https://api.syosetu.com/rank/rankget/" ,
116+ options
117+ ) ;
92118 }
93119
94120 /**
95121 * 殿堂入りAPiへのリクエストを実行する
96122 * @param params クエリパラメータ
123+ * @param options 実行オプション
97124 * @returns ランキング履歴結果
98125 * @see https://dev.syosetu.com/man/rankinapi/
99126 */
100127 async executeRankingHistory (
101- params : RankingHistoryParams
128+ params : RankingHistoryParams ,
129+ options ?: ExecuteOptions
102130 ) : Promise < RankingHistoryRawResult [ ] > {
103- return await this . execute ( params , "https://api.syosetu.com/rank/rankin/" ) ;
131+ return await this . execute (
132+ params ,
133+ "https://api.syosetu.com/rank/rankin/" ,
134+ options
135+ ) ;
104136 }
105137
106138 /**
@@ -110,10 +142,15 @@ export default abstract class NarouNovel {
110142 * @see https://dev.syosetu.com/man/userapi/
111143 */
112144 async executeUserSearch < T extends keyof UserSearchResult > (
113- params : UserSearchParams
145+ params : UserSearchParams ,
146+ options ?: ExecuteOptions
114147 ) : Promise < NarouSearchResults < UserSearchResult , T > > {
115148 return new NarouSearchResults < UserSearchResult , T > (
116- await this . execute ( params , "https://api.syosetu.com/userapi/api/" ) ,
149+ await this . execute (
150+ params ,
151+ "https://api.syosetu.com/userapi/api/" ,
152+ options
153+ ) ,
117154 params
118155 ) ;
119156 }
0 commit comments