adding back rust server
This commit is contained in:
parent
cc38a6c21a
commit
fa2459c42c
3 changed files with 2360 additions and 0 deletions
2262
Cargo.lock
generated
Normal file
2262
Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
20
Cargo.toml
Normal file
20
Cargo.toml
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
[package]
|
||||||
|
name = "tfcconnection"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
multer = "2.1.0"
|
||||||
|
actix = "0.13.0"
|
||||||
|
actix-rt = "2.8.0"
|
||||||
|
actix-web = "4.3.1"
|
||||||
|
env_logger = "0.10.0"
|
||||||
|
reqwest = { version = "0.11.18", features = ["json", "multipart"] }
|
||||||
|
serde = "1.0.163"
|
||||||
|
serde_json = "1.0.96"
|
||||||
|
async-std = "1.12.0"
|
||||||
|
actix-multipart = "0.6.0"
|
||||||
|
futures = "0.3.28"
|
||||||
|
futures-util = "0.3.28"
|
78
src/main.rs
Normal file
78
src/main.rs
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
use actix_multipart::{
|
||||||
|
form::{
|
||||||
|
tempfile::{TempFile, TempFileConfig},
|
||||||
|
MultipartForm,
|
||||||
|
},
|
||||||
|
Multipart,
|
||||||
|
};
|
||||||
|
use actix_web::{middleware, post, web, App, Error, HttpResponse, HttpServer, Result};
|
||||||
|
// use serde::Deserialize;
|
||||||
|
use futures_util::StreamExt as _;
|
||||||
|
use std::{env, io};
|
||||||
|
|
||||||
|
// #[derive(Debug, MultipartForm)]
|
||||||
|
// struct HealthForm {
|
||||||
|
// firstname: String,
|
||||||
|
// lastname: String,
|
||||||
|
// birthdate: String,
|
||||||
|
// }
|
||||||
|
|
||||||
|
#[actix_web::main]
|
||||||
|
async fn main() -> io::Result<()> {
|
||||||
|
env::set_var("RUST_LOG", "actix_web=debug,actix_server=info");
|
||||||
|
env_logger::init();
|
||||||
|
|
||||||
|
HttpServer::new(|| {
|
||||||
|
App::new()
|
||||||
|
// enable logger - always register actix-web Logger middleware last
|
||||||
|
.wrap(middleware::Logger::default())
|
||||||
|
.app_data(web::FormConfig::default().limit(1048576))
|
||||||
|
// register HTTP requests handlers
|
||||||
|
.service(form)
|
||||||
|
})
|
||||||
|
.bind("0.0.0.0:4242")?
|
||||||
|
.run()
|
||||||
|
.await
|
||||||
|
}
|
||||||
|
|
||||||
|
#[post("/health-form")]
|
||||||
|
async fn form(mut form: Multipart) -> Result<HttpResponse, Error> {
|
||||||
|
// println!("{form:?}");
|
||||||
|
while let Some(item) = form.next().await {
|
||||||
|
let mut field = item?;
|
||||||
|
// let mut value = "";
|
||||||
|
let name = field.name();
|
||||||
|
let content_type = field.content_type().unwrap().to_string();
|
||||||
|
if content_type == "application/octet-stream" {
|
||||||
|
// Handle file field
|
||||||
|
// You can save the file or process its contents here
|
||||||
|
while let Some(chunk) = field.try_next().await? {
|
||||||
|
// Process file chunk
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Handle other field types (e.g., text fields)
|
||||||
|
let field_value = field
|
||||||
|
.try_next()
|
||||||
|
.await?
|
||||||
|
.expect("Field value not found")
|
||||||
|
.to_utf8()
|
||||||
|
.expect("Failed to decode field value as UTF-8");
|
||||||
|
|
||||||
|
// Process the field value (e.g., store in a database, perform validation, etc.)
|
||||||
|
println!("Field {}: {}", name, field_value);
|
||||||
|
}
|
||||||
|
// while let Some(chunk) = field.try_next().await {
|
||||||
|
// let value = std::str::from_utf8(&chunk?).unwrap();
|
||||||
|
// println!("{:?}: {:?}", name, value);
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
Ok(HttpResponse::Ok().into())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_boundary(s: &str) -> &str {
|
||||||
|
if let Some(index) = s.find("=") {
|
||||||
|
&s[(index + 1)..]
|
||||||
|
} else {
|
||||||
|
s
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue