mirror of
https://github.com/flibusta-apps/fb2converter_server.git
synced 2025-12-06 06:55:36 +01:00
Fix
This commit is contained in:
31
src/main.rs
31
src/main.rs
@@ -1,9 +1,9 @@
|
|||||||
use std::{net::SocketAddr, time::{SystemTime, Duration}, str::FromStr};
|
use std::{net::SocketAddr, time::{SystemTime, Duration}, str::FromStr, io::SeekFrom};
|
||||||
use axum::{Router, routing::{post, get}, extract::{Multipart, Path, BodyStream}, response::{IntoResponse, AppendHeaders, Response}, http::{StatusCode, header, Request, self}, body::StreamBody, middleware::{Next, self}};
|
use axum::{Router, routing::{post, get}, extract::{Multipart, Path, BodyStream}, response::{IntoResponse, AppendHeaders, Response}, http::{StatusCode, header, Request, self}, body::StreamBody, middleware::{Next, self}};
|
||||||
use axum_prometheus::PrometheusMetricLayer;
|
use axum_prometheus::PrometheusMetricLayer;
|
||||||
use futures_util::StreamExt;
|
use futures_util::StreamExt;
|
||||||
use sentry::{ClientOptions, types::Dsn, integrations::debug_images::DebugImagesIntegration};
|
use sentry::{ClientOptions, types::Dsn, integrations::debug_images::DebugImagesIntegration};
|
||||||
use tokio::{fs::{remove_file, read_dir, remove_dir, File}, io::{AsyncWriteExt, copy}, process::Command, time::sleep};
|
use tokio::{fs::{remove_file, read_dir, remove_dir, File}, io::{AsyncWriteExt, copy, AsyncSeekExt}, process::Command, time::sleep};
|
||||||
use tower_http::trace::{TraceLayer, self};
|
use tower_http::trace::{TraceLayer, self};
|
||||||
use tracing::{info, log, Level};
|
use tracing::{info, log, Level};
|
||||||
use async_tempfile::TempFile;
|
use async_tempfile::TempFile;
|
||||||
@@ -105,22 +105,6 @@ async fn convert_file(
|
|||||||
return StatusCode::BAD_REQUEST.into_response();
|
return StatusCode::BAD_REQUEST.into_response();
|
||||||
}
|
}
|
||||||
|
|
||||||
let result_tempfile = match TempFile::new().await {
|
|
||||||
Ok(v) => v,
|
|
||||||
Err(err) => {
|
|
||||||
log::error!("{:?}", err);
|
|
||||||
return StatusCode::INTERNAL_SERVER_ERROR.into_response()
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
let mut result_tempfile_rw = match result_tempfile.open_rw().await {
|
|
||||||
Ok(v) => v,
|
|
||||||
Err(err) => {
|
|
||||||
log::error!("{:?}", err);
|
|
||||||
return StatusCode::INTERNAL_SERVER_ERROR.into_response()
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
let mut result_file = match File::open(format!("/tmp/{prefix}.{file_format}")).await {
|
let mut result_file = match File::open(format!("/tmp/{prefix}.{file_format}")).await {
|
||||||
Ok(v) => v,
|
Ok(v) => v,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
@@ -129,15 +113,10 @@ async fn convert_file(
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
let content_len = match copy(&mut result_file, &mut result_tempfile_rw).await {
|
let content_len = result_file.seek(SeekFrom::End(0)).await.unwrap();
|
||||||
Ok(v) => v,
|
let _ = result_file.seek(SeekFrom::Start(0)).await;
|
||||||
Err(err) => {
|
|
||||||
log::error!("{:?}", err);
|
|
||||||
return StatusCode::INTERNAL_SERVER_ERROR.into_response()
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
let stream = ReaderStream::new(result_tempfile_rw);
|
let stream = ReaderStream::new(result_file);
|
||||||
let body = StreamBody::new(stream);
|
let body = StreamBody::new(stream);
|
||||||
|
|
||||||
let headers = AppendHeaders([
|
let headers = AppendHeaders([
|
||||||
|
|||||||
Reference in New Issue
Block a user