Skip to content

Commit c2ac5e1

Browse files
author
AndyEveritt
committed
move wrapper to own file
1 parent 73f2bd5 commit c2ac5e1

4 files changed

Lines changed: 51 additions & 41 deletions

File tree

DuetWebAPI/api/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
from .base import DuetAPI
22
from .dsf_api import DSFAPI
33
from .dwc_api import DWCAPI
4+
from .wrapper import DuetAPIWrapper

DuetWebAPI/api/wrapper.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import logging
2+
from typing import Dict, List
3+
4+
from .base import DuetAPI
5+
6+
7+
class DuetAPIWrapper(DuetAPI):
8+
def get_coords(self):
9+
model = self.get_model()
10+
axes = model['move']['axes']
11+
ret = {}
12+
for i in range(0, len(axes)):
13+
ret[axes[i]['letter']] = axes[i]['userPosition']
14+
return(ret)
15+
16+
def get_layer(self):
17+
model = self.get_model()
18+
layer = model['job']['layer']
19+
if not layer:
20+
layer = 0
21+
return(layer)
22+
23+
def get_num_extruders(self):
24+
model = self.get_model()
25+
extruders = model['move']['extruders']
26+
return len(extruders)
27+
28+
def get_num_tools(self):
29+
model = self.get_model()
30+
tools = model['tools']
31+
return len(tools)
32+
33+
def get_status(self):
34+
model = self.get_model()
35+
status = model['state']['status']
36+
return status
37+
38+
def get_temperatures(self):
39+
model = self.get_model()
40+
sensors = model['sensors']['analog']
41+
return sensors

DuetWebAPI/dwa_factory.py

Lines changed: 7 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,17 @@
1717

1818
import requests
1919

20-
from DuetWebAPI.api import DSFAPI, DWCAPI, DuetAPI
20+
from DuetWebAPI.api import DSFAPI, DWCAPI, DuetAPI, DuetAPIWrapper
2121

2222

2323
class DuetWebAPIFactory:
2424
def __init__(self) -> None:
2525
self._creators = {}
2626

27-
def __call__(self, base_url: str) -> DuetAPI:
28-
api = self.get_api(base_url)
29-
wrapper = self.create_wrapper(api)
30-
return wrapper(base_url)
27+
def __call__(self, base_url: str):
28+
Api = self.get_api(base_url)
29+
Wrapper = self.create_wrapper(Api)
30+
return Wrapper(base_url)
3131

3232
def register_api(self, name: str, creator: object, url_suffix: str) -> None:
3333
self._creators[name] = {'creator': creator, 'url_suffix': url_suffix}
@@ -47,43 +47,9 @@ def get_api(self, base_url) -> DuetAPI:
4747
raise ValueError
4848

4949
def create_wrapper(self, creator: DuetAPI):
50-
class DuetAPIWrapper(creator):
51-
def get_coords(self):
52-
model = self.get_model()
53-
axes = model['move']['axes']
54-
ret = {}
55-
for i in range(0, len(axes)):
56-
ret[axes[i]['letter']] = axes[i]['userPosition']
57-
return(ret)
50+
Wrapper = type('DuetWebAPI', (DuetAPIWrapper, creator), {})
5851

59-
def get_layer(self):
60-
model = self.get_model()
61-
layer = model['job']['layer']
62-
if not layer:
63-
layer = 0
64-
return(layer)
65-
66-
def get_num_extruders(self):
67-
model = self.get_model()
68-
extruders = model['move']['extruders']
69-
return len(extruders)
70-
71-
def get_num_tools(self):
72-
model = self.get_model()
73-
tools = model['tools']
74-
return len(tools)
75-
76-
def get_status(self):
77-
model = self.get_model()
78-
status = model['state']['status']
79-
return status
80-
81-
def get_temperatures(self):
82-
model = self.get_model()
83-
sensors = model['sensors']['analog']
84-
return sensors
85-
86-
return DuetAPIWrapper
52+
return Wrapper
8753

8854

8955
DuetWebAPI = DuetWebAPIFactory()

examples.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
riley = DWA('http://riley')
99
force_rig = DWA('http://forcerig')
10+
11+
1012
force_rig.put_file('test.gcode')
1113
riley.put_file('test.gcode')
1214
pass

0 commit comments

Comments
 (0)