diff --git a/src/main.rs b/src/main.rs index 9d7544a..8eea3c0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -66,7 +66,7 @@ impl Prusa { } // TODO return this into a specific type - fn get_storage_info(&self) -> Result<(StorageInfo), Error> { + fn get_storage_info(&self) -> Result { let api_target = "/api/v1/storage"; let resp = self.client.get(format!("http://{}{api_target}", self.ip_addr)) .header("X-Api-Key", &self.api_key) @@ -85,18 +85,59 @@ impl Prusa { // type: string // format: binary + + // Need parameters + /* + parameters: + - in: header + name: Content-Length + description: Length of file to upload + schema: + type: integer + example: 101342 + - in: header + name: Content-Type + description: Type of uploaded media + schema: + type: string + default: application/octet-stream + - in: header + name: Print-After-Upload + description: Whether to start printing the file after upload + schema: + type: string + description: ?0=False, ?1=True, according RFC8941/3.3.6 + enum: [ "?0", "?1" ] + default: "?0" + - in: header + name: Overwrite + description: Whether to overwrite already existing files + schema: + type: string + description: ?0=False, ?1=True, according RFC8941/3.3.6 + enum: ["?0", "?1"] + default: "?0" + */ + fn try_load_file(&self, filepath: &str) -> Result { let data = fs::read(filepath)?; // TODO: Allow storage selection // For now, assume that we're using only USB: - let api_target = "/api/v1/files/usb/{path}"; + let api_target = "/api/v1/files/usb/test.gcode"; let resp = self.client.put(format!("http://{}{api_target}", self.ip_addr)) .header("X-Api-Key", &self.api_key) + .header("Content-Type", "application/octet-stream") + .header("Content-Length", data.len()) + .header("Print-After-Upload", "0") + .header("Overwrite", "0") + .body(data) .send()?; let text = resp.text()?; println!("{text}"); - todo!("implement try_load_file") + + todo!("Implement UUID Handling"); + // Ok(Uuid::new_v8()) } fn try_print_file(&self, _id: &Uuid) -> Result<(), Error> { @@ -141,7 +182,6 @@ struct Cli { enum Command { Info, Load { - #[arg(short, long)] filepath: String, }, Print {