1616import requests
1717import json
1818import sys
19+ import datetime
1920import logging
2021
2122
@@ -76,15 +77,15 @@ def get_model(self, key=None) -> Dict:
7677 r = requests .get (url , {'flags' : 'd99vn' , 'key' : key })
7778 if not r .ok :
7879 raise ValueError
79- j = json . loads ( r . text )
80+ j = r . json ( )
8081 return j ['result' ]
8182
8283 def post_code (self , code ) -> Dict :
8384 url = f'{ self ._base_url } /rr_gcode'
8485 r = requests .get (url , {'gcode' : code })
8586 if not r .ok :
8687 raise ValueError
87- return json . loads ( r . text )
88+ return r . json ( )
8889
8990 def get_file (self , filename : str , directory : str = 'gcodes' ) -> str :
9091 """
@@ -99,8 +100,13 @@ def get_file(self, filename: str, directory: str = 'gcodes') -> str:
99100 raise ValueError
100101 return r .text
101102
102- def put_file (self , filename ):
103- pass
103+ def put_file (self , file : str , duet_filename : str , directory : str = 'gcodes' ):
104+ url = f'{ self ._base_url } /rr_upload?name=/{ directory } /{ duet_filename } '
105+ with open (file , 'rb' ) as f :
106+ r = requests .post (url , data = f )
107+ if not r .ok :
108+ raise ValueError
109+ return r .json ()
104110
105111 def get_fileinfo (self , filename ):
106112 pass
@@ -116,7 +122,7 @@ def get_directory(self, directory) -> List[Dict]:
116122 r = requests .get (url , {'dir' : f'/{ directory } ' })
117123 if not r .ok :
118124 raise ValueError
119- return json . loads ( r . text )['files' ]
125+ return r . json ( )['files' ]
120126
121127 def put_directory (self , directory ):
122128 pass
@@ -126,7 +132,7 @@ class DSFAPI(DuetAPI):
126132 def get_model (self ) -> Dict :
127133 url = f'{ self ._base_url } /machine/status'
128134 r = requests .get (url )
129- j = json . loads ( r . text )
135+ j = r . json ( )
130136 return j
131137
132138 def post_code (self , code ) -> str :
@@ -147,8 +153,14 @@ def get_file(self, filename, directory):
147153 raise ValueError
148154 return r .text
149155
150- def put_file (self , filename ):
151- pass
156+ def put_file (self , file : str , duet_filename : str , directory : str = 'gcodes' ):
157+ # BUG this uploads an empty file
158+ url = f'{ self ._base_url } /machine/file/{ directory } /{ duet_filename } '
159+ with open (file , 'rb' ) as f :
160+ r = requests .put (url , data = f )
161+ if not r .ok :
162+ raise ValueError
163+ return r .ok
152164
153165 def get_fileinfo (self , filename ):
154166 pass
@@ -164,7 +176,7 @@ def get_directory(self, directory) -> List[Dict]:
164176 r = requests .get (url )
165177 if not r .ok :
166178 raise ValueError
167- return json . loads ( r . text )
179+ return r . json ( )
168180
169181 def put_directory (self , directory ):
170182 pass
@@ -177,6 +189,6 @@ def put_directory(self, directory):
177189
178190riley = factory .get_api ('http://riley' )
179191force_rig = factory .get_api ('http://forcerig' )
180- force_rig .get_directory ( 'sys ' )
181- riley .get_directory ( 'sys ' )
192+ force_rig .put_file ( 'test.gcode' , 'test.gcode ' )
193+ riley .put_file ( 'test.gcode' , 'test.gcode ' )
182194pass
0 commit comments