Skip to content

Commit d229692

Browse files
author
AndyEveritt
committed
add upload file
1 parent 2750653 commit d229692

1 file changed

Lines changed: 23 additions & 11 deletions

File tree

DuetWebAPI/DuetWebAPI.py

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import requests
1717
import json
1818
import sys
19+
import datetime
1920
import 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

178190
riley = factory.get_api('http://riley')
179191
force_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')
182194
pass

0 commit comments

Comments
 (0)