11import logging
22import os
3- from typing import Dict , List
3+ from typing import Dict , List , Union
4+ from io import StringIO , TextIOWrapper
45
56import requests
67
@@ -17,15 +18,15 @@ class DWCAPI(DuetAPI):
1718 api_name = 'DWC_REST'
1819
1920 def get_model (self , key : str = None ) -> Dict :
20- url = f'{ self ._base_url } /rr_model'
21+ url = f'{ self .base_url } /rr_model'
2122 r = requests .get (url , {'flags' : 'd99vn' , 'key' : key })
2223 if not r .ok :
2324 raise ValueError
2425 j = r .json ()
2526 return j ['result' ]
2627
2728 def send_code (self , code : str ) -> Dict :
28- url = f'{ self ._base_url } /rr_gcode'
29+ url = f'{ self .base_url } /rr_gcode'
2930 r = requests .get (url , {'gcode' : code })
3031 if not r .ok :
3132 raise ValueError
@@ -38,24 +39,21 @@ def get_file(self, filename: str, directory: str = 'gcodes') -> str:
3839
3940 returns the file as a string
4041 """
41- url = f'{ self ._base_url } /rr_download'
42+ url = f'{ self .base_url } /rr_download'
4243 r = requests .get (url , {'name' : f'/{ directory } /{ filename } ' })
4344 if not r .ok :
4445 raise ValueError
4546 return r .text
4647
47- def upload_file (self , file : str , directory : str = 'gcodes' ) -> Dict :
48- file = os .path .abspath (file ).replace ('\\ ' , '/' )
49- filename = file .split ('/' )[- 1 ]
50- url = f'{ self ._base_url } /rr_upload?name=/{ directory } /{ filename } '
51- with open (file , 'rb' ) as f :
52- r = requests .post (url , data = f )
48+ def upload_file (self , file : Union [StringIO , TextIOWrapper ], filename : str , directory : str = 'gcodes' ) -> Dict :
49+ url = f'{ self .base_url } /rr_upload?name=/{ directory } /{ filename } '
50+ r = requests .post (url , data = file )
5351 if not r .ok :
5452 raise ValueError
5553 return r .json ()
5654
5755 def get_fileinfo (self , filename : str = None , directory : str = 'gcodes' ) -> Dict :
58- url = f'{ self ._base_url } /rr_fileinfo'
56+ url = f'{ self .base_url } /rr_fileinfo'
5957 if filename :
6058 r = requests .get (url , {'name' : f'/{ directory } /{ filename } ' })
6159 else :
@@ -65,7 +63,7 @@ def get_fileinfo(self, filename: str = None, directory: str = 'gcodes') -> Dict:
6563 return r .json ()
6664
6765 def delete_file (self , filename : str , directory : str = 'gcodes' ) -> Dict :
68- url = f'{ self ._base_url } /rr_delete'
66+ url = f'{ self .base_url } /rr_delete'
6967 r = requests .get (url , {'name' : f'/{ directory } /{ filename } ' })
7068 if not r .ok :
7169 raise ValueError
@@ -74,21 +72,21 @@ def delete_file(self, filename: str, directory: str = 'gcodes') -> Dict:
7472 def move_file (self , from_path , to_path , ** _ignored ):
7573 # BUG this doesn't work currently
7674 raise NotImplementedError
77- url = f'{ self ._base_url } /rr_move'
75+ url = f'{ self .base_url } /rr_move'
7876 r = requests .get (url , {'old' : f'{ from_path } ' , 'new' : f'{ to_path } ' })
7977 if not r .ok :
8078 raise ValueError
8179 return r .json ()
8280
8381 def get_directory (self , directory : str ) -> List [Dict ]:
84- url = f'{ self ._base_url } /rr_filelist'
82+ url = f'{ self .base_url } /rr_filelist'
8583 r = requests .get (url , {'dir' : f'/{ directory } ' })
8684 if not r .ok :
8785 raise ValueError
8886 return r .json ()['files' ]
8987
9088 def create_directory (self , directory : str ) -> Dict :
91- url = f'{ self ._base_url } /rr_mkdir'
89+ url = f'{ self .base_url } /rr_mkdir'
9290 r = requests .get (url , {'dir' : f'/{ directory } ' })
9391 if not r .ok :
9492 raise ValueError
0 commit comments