Doodle3D-API/src/api/printer.js

50 lines
1.3 KiB
JavaScript

import * as rest from '../rest.js';
export default class Printer {
constructor(api) {
this.api = api;
}
temperature() {
return rest.get(`${ this.api }printer/temperature`);
}
progress() {
return rest.get(`${ this.api }printer/progress`);
}
state() {
return rest.get(`${ this.api }printer/state`);
}
listAll() {
return rest.get(`${ this.api }printer/listall`);
}
heatup() {
return rest.post(`${ this.api }printer/heatup`, {});
}
print(gcode = '', first = false, start = false, last) {
return rest.post(`${ this.api }printer/print`, { gcode, first, start, last });
}
stop(gcode = '') {
return rest.post(`${ this.api }printer/stop`, { gcode });
}
fetch(gcode = '') {
rest.post(`https://tranquil-meadow-94621.herokuapp.com/upload`, { gcode })
.then(response => {
rest.post(`${ this.api }printer/fetch`, { id: response.id });
}).catch(err => {
console.log(err);
});
}
async _sendBatch(gcode, start, index) {
try {
const response = await this.print(gcode, start, start);
console.log(`batch sent: ${ index }`);
} catch(error) {
console.log(`failed sending batch: ${ index }`);
await sleep(1000);
await this._sendBatch(gcode, index);
}
}
}