Coverage for src/lanraragi_api/lanraragi.py: 27%

15 statements  

« prev     ^ index     » next       coverage.py v7.16.0, created at 2026-09-22 23:19 +0000

1from lanraragi_api.api import ( 

2 OPDSAPI, 

3 ArchiveAPI, 

4 CategoryAPI, 

5 DatabaseAPI, 

6 MinionAPI, 

7 MiscAPI, 

8 PluginAPI, 

9 SearchAPI, 

10 ShinobuAPI, 

11 StampAPI, 

12 TankoubonAPI, 

13) 

14from lanraragi_api.entity.base import Auth 

15 

16 

17class LANraragiAPI: 

18 """Entry point of the library, grouping every API section of a server. 

19 

20 Each attribute is an independent client for one group of endpoints, and all 

21 of them share the connection settings passed to this class. 

22 

23 Args: 

24 server: Base URL of the LANraragi server, with or without a trailing 

25 slash. 

26 key: API key sent with every request. Defaults to None, which sends no 

27 credentials. 

28 auth_way: How the API key is transmitted. Defaults to 

29 ``Auth.AUTH_HEADER``. 

30 timeout: Timeout applied to every request, either a single value or a 

31 ``(connect, read)`` pair. Defaults to None, meaning no timeout. 

32 include_error_payload: Whether ``APIOperationError`` carries the raw 

33 response payload. Defaults to False. 

34 include_operation_error_message: Whether ``APIOperationError`` carries 

35 the error message reported by the server. Defaults to True. 

36 raise_on_operation_error: Whether a failed operation raises 

37 ``APIOperationError`` instead of being returned to the caller. 

38 Defaults to False. 

39 default_headers: Extra headers sent with every request. Defaults to 

40 None, which sends no extra headers. 

41 default_params: Extra query parameters sent with every request. 

42 Defaults to None, which sends no extra parameters. 

43 

44 Attributes: 

45 search (SearchAPI): Search endpoints. 

46 archives (ArchiveAPI): Archive endpoints. 

47 database (DatabaseAPI): Database endpoints. 

48 categories (CategoryAPI): Category endpoints. 

49 tankoubons (TankoubonAPI): Tankoubon endpoints. 

50 plugins (PluginAPI): Plugin endpoints. 

51 shinobu (ShinobuAPI): Shinobu endpoints. 

52 minion (MinionAPI): Minion job endpoints. 

53 opds (OPDSAPI): OPDS endpoints. 

54 misc (MiscAPI): Miscellaneous endpoints. 

55 stamps (StampAPI): Stamp endpoints. 

56 """ 

57 

58 def __init__( 

59 self, 

60 server: str, 

61 key: str | None = None, 

62 auth_way: Auth = Auth.AUTH_HEADER, 

63 timeout: float | tuple[int, int] | None = None, 

64 include_error_payload: bool = False, 

65 include_operation_error_message: bool = True, 

66 raise_on_operation_error: bool = False, 

67 default_headers: dict[str, str] | None = None, 

68 default_params: dict[str, str] | None = None, 

69 ): 

70 self.search: SearchAPI = SearchAPI( 

71 server, 

72 key=key, 

73 auth_way=auth_way, 

74 timeout=timeout, 

75 include_error_payload=include_error_payload, 

76 include_operation_error_message=include_operation_error_message, 

77 raise_on_operation_error=raise_on_operation_error, 

78 default_headers=default_headers, 

79 default_params=default_params, 

80 ) 

81 self.archives: ArchiveAPI = ArchiveAPI( 

82 server, 

83 key=key, 

84 auth_way=auth_way, 

85 timeout=timeout, 

86 include_error_payload=include_error_payload, 

87 include_operation_error_message=include_operation_error_message, 

88 raise_on_operation_error=raise_on_operation_error, 

89 default_headers=default_headers, 

90 default_params=default_params, 

91 ) 

92 self.database: DatabaseAPI = DatabaseAPI( 

93 server, 

94 key=key, 

95 auth_way=auth_way, 

96 timeout=timeout, 

97 include_error_payload=include_error_payload, 

98 include_operation_error_message=include_operation_error_message, 

99 raise_on_operation_error=raise_on_operation_error, 

100 default_headers=default_headers, 

101 default_params=default_params, 

102 ) 

103 self.categories: CategoryAPI = CategoryAPI( 

104 server, 

105 key=key, 

106 auth_way=auth_way, 

107 timeout=timeout, 

108 include_error_payload=include_error_payload, 

109 include_operation_error_message=include_operation_error_message, 

110 raise_on_operation_error=raise_on_operation_error, 

111 default_headers=default_headers, 

112 default_params=default_params, 

113 ) 

114 self.tankoubons: TankoubonAPI = TankoubonAPI( 

115 server, 

116 key=key, 

117 auth_way=auth_way, 

118 timeout=timeout, 

119 include_error_payload=include_error_payload, 

120 include_operation_error_message=include_operation_error_message, 

121 raise_on_operation_error=raise_on_operation_error, 

122 default_headers=default_headers, 

123 default_params=default_params, 

124 ) 

125 self.plugins: PluginAPI = PluginAPI( 

126 server, 

127 key=key, 

128 auth_way=auth_way, 

129 timeout=timeout, 

130 include_error_payload=include_error_payload, 

131 include_operation_error_message=include_operation_error_message, 

132 raise_on_operation_error=raise_on_operation_error, 

133 default_headers=default_headers, 

134 default_params=default_params, 

135 ) 

136 self.shinobu: ShinobuAPI = ShinobuAPI( 

137 server, 

138 key=key, 

139 auth_way=auth_way, 

140 timeout=timeout, 

141 include_error_payload=include_error_payload, 

142 include_operation_error_message=include_operation_error_message, 

143 raise_on_operation_error=raise_on_operation_error, 

144 default_headers=default_headers, 

145 default_params=default_params, 

146 ) 

147 self.minion: MinionAPI = MinionAPI( 

148 server, 

149 key=key, 

150 auth_way=auth_way, 

151 timeout=timeout, 

152 include_error_payload=include_error_payload, 

153 include_operation_error_message=include_operation_error_message, 

154 raise_on_operation_error=raise_on_operation_error, 

155 default_headers=default_headers, 

156 default_params=default_params, 

157 ) 

158 self.opds: OPDSAPI = OPDSAPI( 

159 server, 

160 key=key, 

161 auth_way=auth_way, 

162 timeout=timeout, 

163 include_error_payload=include_error_payload, 

164 include_operation_error_message=include_operation_error_message, 

165 raise_on_operation_error=raise_on_operation_error, 

166 default_headers=default_headers, 

167 default_params=default_params, 

168 ) 

169 self.misc: MiscAPI = MiscAPI( 

170 server, 

171 key=key, 

172 auth_way=auth_way, 

173 timeout=timeout, 

174 include_error_payload=include_error_payload, 

175 include_operation_error_message=include_operation_error_message, 

176 raise_on_operation_error=raise_on_operation_error, 

177 default_headers=default_headers, 

178 default_params=default_params, 

179 ) 

180 self.stamps: StampAPI = StampAPI( 

181 server, 

182 key=key, 

183 auth_way=auth_way, 

184 timeout=timeout, 

185 include_error_payload=include_error_payload, 

186 include_operation_error_message=include_operation_error_message, 

187 raise_on_operation_error=raise_on_operation_error, 

188 default_headers=default_headers, 

189 default_params=default_params, 

190 )