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
« 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
17class LANraragiAPI:
18 """Entry point of the library, grouping every API section of a server.
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.
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.
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 """
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 )