@@ -108,14 +108,29 @@ def put_file(self, file: str, duet_filename: str, directory: str = 'gcodes'):
108108 raise ValueError
109109 return r .json ()
110110
111- def get_fileinfo (self , filename ):
112- pass
111+ def get_fileinfo (self , filename : str = None , directory : str = 'gcodes' ):
112+ url = f'{ self ._base_url } /rr_fileinfo'
113+ if filename :
114+ r = requests .get (url , {'name' : f'/{ directory } /{ filename } ' })
115+ else :
116+ r = requests .get (url )
117+ if not r .ok :
118+ raise ValueError
119+ return r .json ()
113120
114- def delete_file (self , filename ):
115- pass
121+ def delete_file (self , filename : str , directory : str = 'gcodes' ):
122+ url = f'{ self ._base_url } /rr_delete'
123+ r = requests .get (url , {'name' : f'/{ directory } /{ filename } ' })
124+ if not r .ok :
125+ raise ValueError
126+ return r .json ()
116127
117- def move_file (self , from_path , to_path , force = False ):
118- pass
128+ def move_file (self , from_path , to_path , ** _ignored ):
129+ url = f'{ self ._base_url } /rr_move'
130+ r = requests .get (url , {'old' : f'{ from_path } ' , 'new' : f'{ to_path } ' })
131+ if not r .ok :
132+ raise ValueError
133+ return r .json ()
119134
120135 def get_directory (self , directory ) -> List [Dict ]:
121136 url = f'{ self ._base_url } /rr_filelist'
@@ -125,7 +140,11 @@ def get_directory(self, directory) -> List[Dict]:
125140 return r .json ()['files' ]
126141
127142 def put_directory (self , directory ):
128- pass
143+ url = f'{ self ._base_url } /rr_mkdir'
144+ r = requests .get (url , {'dir' : f'/{ directory } ' })
145+ if not r .ok :
146+ raise ValueError
147+ return r .json ()
129148
130149
131150class DSFAPI (DuetAPI ):
@@ -140,14 +159,14 @@ def post_code(self, code) -> str:
140159 r = requests .post (url , data = code )
141160 return r .text
142161
143- def get_file (self , filename , directory ) :
162+ def get_file (self , filename : str , directory : str = 'gcodes' ) -> str :
144163 """
145164 filename: name of the file you want to download including extension
146165 directory: the folder that the file is in, options are ['gcodes', 'macros', 'sys']
147166
148167 returns the file as a string
149168 """
150- url = f'{ self ._base_url } /machine/file/{ directory } '
169+ url = f'{ self ._base_url } /machine/file/{ directory } / { filename } '
151170 r = requests .get (url )
152171 if not r .ok :
153172 raise ValueError
@@ -162,14 +181,26 @@ def put_file(self, file: str, duet_filename: str, directory: str = 'gcodes'):
162181 raise ValueError
163182 return r .ok
164183
165- def get_fileinfo (self , filename ):
166- pass
184+ def get_fileinfo (self , filename : str , directory : str = 'gcodes' ):
185+ url = f'{ self ._base_url } /machine/fileinfo/{ directory } /{ filename } '
186+ r = requests .get (url )
187+ if not r .ok :
188+ raise ValueError
189+ return r .json ()
167190
168- def delete_file (self , filename ):
169- pass
191+ def delete_file (self , filename : str , directory : str = 'gcodes' ):
192+ url = f'{ self ._base_url } /machine/file/{ directory } /{ filename } '
193+ r = requests .delete (url )
194+ if not r .ok :
195+ raise ValueError
196+ return r .text
170197
171198 def move_file (self , from_path , to_path , force = False ):
172- pass
199+ url = f'{ self ._base_url } /machine/file/move'
200+ r = requests .post (url , {'from' : f'{ from_path } ' , 'to' : f'{ to_path } ' , 'force' : force })
201+ if not r .ok :
202+ raise ValueError
203+ return r .text
173204
174205 def get_directory (self , directory ) -> List [Dict ]:
175206 url = f'{ self ._base_url } /machine/directory/{ directory } '
@@ -179,7 +210,11 @@ def get_directory(self, directory) -> List[Dict]:
179210 return r .json ()
180211
181212 def put_directory (self , directory ):
182- pass
213+ url = f'{ self ._base_url } /machine/directory/{ directory } '
214+ r = requests .put (url )
215+ if not r .ok :
216+ raise ValueError
217+ return r .text
183218
184219
185220factory = DuetWebAPIFactory ()
0 commit comments