package download functionality to DaemonService
This commit is contained in:
		
							parent
							
								
									e76c9cc8cc
								
							
						
					
					
						commit
						a709bffb02
					
				
							
								
								
									
										883
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										883
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -12,6 +12,8 @@ tonic = "0.12.3" | |||||||
| 
 | 
 | ||||||
| # detee-shared = { git = "ssh://git@gitea.detee.cloud/noormohammedb/detee-shared" } | # detee-shared = { git = "ssh://git@gitea.detee.cloud/noormohammedb/detee-shared" } | ||||||
| detee-shared = { path = "../detee-shared" } | detee-shared = { path = "../detee-shared" } | ||||||
|  | chrono = "0.4.39" | ||||||
|  | reqwest = "0.12.12" | ||||||
| 
 | 
 | ||||||
| [build-dependencies] | [build-dependencies] | ||||||
| tonic-build = "0.12.3" | tonic-build = "0.12.3" | ||||||
|  | |||||||
							
								
								
									
										39
									
								
								src/grpc.rs
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										39
									
								
								src/grpc.rs
									
									
									
									
									
								
							| @ -1,3 +1,8 @@ | |||||||
|  | use chrono::Utc; | ||||||
|  | use reqwest::Client; | ||||||
|  | use std::fs; | ||||||
|  | use std::io::Write; | ||||||
|  | use std::path::Path; | ||||||
| use std::sync::Arc; | use std::sync::Arc; | ||||||
| use std::{net::SocketAddr, str::FromStr}; | use std::{net::SocketAddr, str::FromStr}; | ||||||
| use tokio::sync::RwLock; | use tokio::sync::RwLock; | ||||||
| @ -45,7 +50,39 @@ impl DaemonServicePB for DaemonServer { | |||||||
|         request: tonic::Request<Container>, |         request: tonic::Request<Container>, | ||||||
|     ) -> Result<tonic::Response<NewContainerRes>, tonic::Status> { |     ) -> Result<tonic::Response<NewContainerRes>, tonic::Status> { | ||||||
|         let req_data = request.into_inner(); |         let req_data = request.into_inner(); | ||||||
|         dbg!(req_data); |         dbg!(&req_data); | ||||||
|  | 
 | ||||||
|  |         if let Some(package_url) = req_data.package_url { | ||||||
|  |             let dir_path = Path::new("./enclave_packages"); | ||||||
|  |             fs::create_dir_all(dir_path)?; | ||||||
|  | 
 | ||||||
|  |             let file_name = format!( | ||||||
|  |                 "{}-enclave_packager.tar.gz", | ||||||
|  |                 Utc::now().format("%Y%m%d%H%M%S") | ||||||
|  |             ); | ||||||
|  |             let file_path = dir_path.join(file_name); | ||||||
|  |             match download_file(&package_url, &file_path).await { | ||||||
|  |                 Ok(_) => { | ||||||
|  |                     println!("Downloaded file to {:?}", file_path); | ||||||
|  |                 } | ||||||
|  |                 Err(e) => { | ||||||
|  |                     println!("Error downloading file: {:?}", e); | ||||||
|  |                     return Err(tonic::Status::internal("Error downloading file")); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         Ok(tonic::Response::new(NewContainerRes::default())) |         Ok(tonic::Response::new(NewContainerRes::default())) | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | async fn download_file(url: &str, file_path: &Path) -> Result<(), Box<dyn std::error::Error>> { | ||||||
|  |     let client = Client::new(); | ||||||
|  |     let response = client.get(url).send().await?; | ||||||
|  |     let data = response.bytes().await?; | ||||||
|  | 
 | ||||||
|  |     let mut file = fs::File::create(file_path)?; | ||||||
|  |     file.write_all(&data)?; | ||||||
|  | 
 | ||||||
|  |     Ok(()) | ||||||
|  | } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user