|
21 | 21 |
|
22 | 22 |
|
23 | 23 | class DuetWebAPIFactory: |
24 | | - def __init__(self): |
| 24 | + def __init__(self) -> None: |
25 | 25 | self._creators = {} |
| 26 | + |
| 27 | + def __call__(self, base_url: str) -> DuetAPI: |
| 28 | + self.get_api(base_url) |
26 | 29 |
|
27 | | - def register_api(self, name: str, creator: object, url_suffix: str): |
| 30 | + def register_api(self, name: str, creator: object, url_suffix: str) -> None: |
28 | 31 | self._creators[name] = {'creator': creator, 'url_suffix': url_suffix} |
29 | 32 |
|
30 | | - def get_api(self, base_url): |
| 33 | + def get_api(self, base_url) -> DuetAPI: |
31 | 34 | for api in self._creators.values(): |
32 | 35 | url = base_url + api['url_suffix'] |
33 | 36 | r = requests.get(url, timeout=(2, 60)) |
34 | 37 | if r.ok: |
35 | 38 | creator = api['creator'] |
36 | 39 | return creator(base_url) |
37 | 40 |
|
38 | | - self.logging.error(f'Can not get API for {self.base_url}') |
| 41 | + self.logging.error(f'Can not get API for {base_url}') |
39 | 42 | raise ValueError |
40 | 43 |
|
41 | 44 |
|
@@ -217,13 +220,13 @@ def put_directory(self, directory): |
217 | 220 | return r.text |
218 | 221 |
|
219 | 222 |
|
220 | | -factory = DuetWebAPIFactory() |
221 | | -factory.register_api('DWC', DWCAPI, '/rr_model') |
222 | | -factory.register_api('DSF', DSFAPI, '/machine/status') |
| 223 | +DuetWebAPI = DuetWebAPIFactory() |
| 224 | +DuetWebAPI.register_api('DWC', DWCAPI, '/rr_model') |
| 225 | +DuetWebAPI.register_api('DSF', DSFAPI, '/machine/status') |
223 | 226 |
|
224 | 227 |
|
225 | | -riley = factory.get_api('http://riley') |
226 | | -force_rig = factory.get_api('http://forcerig') |
| 228 | +riley = DuetWebAPI('http://riley') |
| 229 | +force_rig = DuetWebAPI('http://forcerig') |
227 | 230 | force_rig.put_file('test.gcode', 'test.gcode') |
228 | 231 | riley.put_file('test.gcode', 'test.gcode') |
229 | 232 | pass |
0 commit comments