adding back rust server
This commit is contained in:
parent
cc38a6c21a
commit
fa2459c42c
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…
Reference in a new issue