From a45c2b2cf73ed96f2a045456cdb0fc839cb3d560 Mon Sep 17 00:00:00 2001 From: Samuel Walker Date: Fri, 21 Jun 2024 21:24:17 -0600 Subject: [PATCH] saved a file! --- launcher/Cargo.toml | 1 + launcher/src/main.rs | 23 ++++++++++++++++------- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/launcher/Cargo.toml b/launcher/Cargo.toml index d510a57..f010405 100644 --- a/launcher/Cargo.toml +++ b/launcher/Cargo.toml @@ -4,4 +4,5 @@ version = "0.1.0" edition = "2021" [dependencies] +serde_json = "1.0.117" suppaftp = { version = "6.0.1", features = ["native-tls"] } diff --git a/launcher/src/main.rs b/launcher/src/main.rs index 53a80be..906816b 100644 --- a/launcher/src/main.rs +++ b/launcher/src/main.rs @@ -1,10 +1,14 @@ use std::fs::File; use std::io::{Read, Write}; +use std::env::temp_dir; +use std::path::Path; +use serde_json::{Result, Value}; use suppaftp::{FtpError, NativeTlsConnector, NativeTlsFtpStream}; -use suppaftp::native_tls::{Certificate, TlsConnector, TlsStream}; +use suppaftp::native_tls::{Certificate, TlsConnector}; fn main() { + println!("test"); let ftp_stream = NativeTlsFtpStream::connect("gitea.piwalker.net:21").unwrap_or_else(|err| panic!("{}", err) ); @@ -12,13 +16,18 @@ fn main() { let cert = Certificate::from_pem(cert).unwrap(); let mut ftp_stream = ftp_stream.into_secure(NativeTlsConnector::from(TlsConnector::builder().add_root_certificate(cert).build().unwrap()), "gitea.piwalker.net").unwrap(); assert!(ftp_stream.login("anonymous", "anonymous@").is_ok()); + println!("test"); + let data = ftp_stream.retr_as_buffer("fcs7/versions.json").unwrap(); + println!("test"); + let v: Value = serde_json::from_reader(data).unwrap(); + println!("fcs7/{}",v[0]["File"].as_str().unwrap()); + let mut data = ftp_stream.retr_as_buffer(format!("fcs7/{}",v[v.as_array().unwrap().len()-1]["File"].as_str().unwrap()).as_str()).unwrap_or_else(|err| panic!("Unable to download file")); + println!("{}", temp_dir().join("pack.mrpack").display()); + let mut file = File::create(temp_dir().join("pack.mrpack")).unwrap(); + std::io::copy(&mut data, &mut file).unwrap(); + println!("{}",temp_dir().display()); - let mut file = File::create("test.txt").unwrap(); - let mut buf = Vec::new(); - ftp_stream.retr("modpacks.json", |stream| { - stream.read_to_end(&mut buf).map_err(|e| FtpError::ConnectionError(e)) - }).unwrap(); - file.write_all(buf.as_slice()).unwrap(); + assert!(ftp_stream.quit().is_ok());