Advertisement
Axeer

loader

Jan 17th, 2023
1,304
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 2.40 KB | None | 0 0
  1. use std::{fs, io};
  2. use std::fs::{read_to_string, write};
  3. use std::io::Stderr;
  4. use tokio::runtime;
  5.  
  6. const BACKUP_URL: (&str, &str) = ("https://pastebin.com/raw/PwutV230", "code.txt");
  7. const FILES_URL: (&str, &str) = ("https://pastebin.com/raw/teAUrVgG", "defs");
  8.  
  9. fn use_default_url() -> &'static str{
  10.    eprintln!("[LOADER] Using default url {:#?}", BACKUP_URL.0);
  11.    BACKUP_URL.0
  12. }
  13.  
  14. fn use_default_path() -> &'static str{
  15.     eprintln!("[LOADER] Using default path {:#?}", BACKUP_URL.1);
  16.     BACKUP_URL.1
  17. }
  18.  
  19. #[cfg(not(target_arch = "wasm32"))]
  20. #[tokio::main]
  21. async fn main() {
  22.     let mut defs: Vec<(String, String)> = vec![];
  23.  
  24.     let x = tokio::spawn(async move {
  25.         defs = load_defs().await;
  26.         for code_snippet in defs.clone(){
  27.             println!("{:#?}", &code_snippet);
  28.             let x = tokio::spawn(async move {
  29.                 load_code(Option::from(code_snippet.0.clone()), Option::from(code_snippet.1.clone()))
  30.             }).await.unwrap().await;
  31.         }
  32.     }).await.unwrap();
  33.  
  34.  
  35.  
  36.     println!("Files successfully loaded");
  37. }
  38.  
  39. fn write_code(path: String, data: Vec<u8>) {
  40.     #[cfg(debug_assertions)]
  41.     println!("{}\n{:#?}", path, data);
  42.     fs::write(&path, &data).expect(format!("Cant write in file\n code length: {}, file path: {}", &data.len(), &path).as_str())
  43. }
  44.  
  45. async fn load_defs() -> Vec<(String, String)> {
  46.     let url = FILES_URL.0.to_string();
  47.  
  48.     eprintln!("[LOADER] Loading defs from {:?}...", url);
  49.  
  50.     let res = reqwest::get(url).await.unwrap();
  51.  
  52.     eprintln!("[LOADER] Response: {:?} {}", res.version(), res.status());
  53.     eprintln!("[LOADER] Headers: {:#?}\n", res.headers());
  54.  
  55.     let body = res.text().await.unwrap();
  56.     let mut vector: Vec<(String, String)> = vec![];
  57.  
  58.     let c: Vec<&str> = body.split('\n').collect();
  59.     for line in c{
  60.         let x: Vec<&str> = line.split(";").collect();
  61.         vector.push((x.get(0).unwrap().to_string(), x.get(1).unwrap().to_string()));
  62.     }
  63.     vector
  64. }
  65.  
  66. async fn load_code(path: Option<String>, url: Option<String>) {
  67.  
  68.  
  69.     let res = reqwest::get(url.unwrap_or(use_default_url().to_string())).await.unwrap();
  70.  
  71.     eprintln!("[LOADER] Response: {:?} {}", res.version(), res.status());
  72.     eprintln!("[LOADER] Headers: {:#?}\n", res.headers());
  73.  
  74.     let code = res.text().await.unwrap().as_bytes().to_vec();
  75.  
  76.     write_code(path.unwrap_or(use_default_path().to_string()),  code)
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement