summaryrefslogtreecommitdiff
path: root/src/types/extract.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/types/extract.rs')
-rw-r--r--src/types/extract.rs63
1 files changed, 30 insertions, 33 deletions
diff --git a/src/types/extract.rs b/src/types/extract.rs
index 4d7ac51..1258ef9 100644
--- a/src/types/extract.rs
+++ b/src/types/extract.rs
@@ -1,20 +1,24 @@
-use std::{io::{Read, Cursor}, net::{IpAddr, SocketAddr}};
+use std::{
+ io::{Cursor, Read},
+ net::{IpAddr, SocketAddr},
+};
use axum::{
async_trait,
body::HttpBody,
- extract::{FromRequest, FromRequestParts, ConnectInfo},
+ extract::{ConnectInfo, FromRequest, FromRequestParts},
http::{request::Parts, Request},
response::Response,
BoxError, RequestExt,
};
use bytes::Bytes;
-use image::{io::Reader, ImageFormat, DynamicImage};
+use image::{io::Reader, DynamicImage, ImageFormat};
use serde::de::DeserializeOwned;
use tower_cookies::Cookies;
use crate::{
- admin, console,
+ public::admin,
+ public::console,
types::{
http::{ResponseCode, Result},
session::Session,
@@ -32,41 +36,43 @@ where
type Rejection = Response;
async fn from_request_parts(parts: &mut Parts, _state: &S) -> Result<Self> {
-
let headers = &parts.headers;
- let forwardedfor = headers.get("x-forwarded-for")
- .and_then(|h| h.to_str().ok())
- .and_then(|h|
- h.split(',')
- .rev()
- .find_map(|s| s.trim().parse::<IpAddr>().ok())
- );
+ let forwardedfor = headers
+ .get("x-forwarded-for")
+ .and_then(|h| h.to_str().ok())
+ .and_then(|h| {
+ h.split(',')
+ .rev()
+ .find_map(|s| s.trim().parse::<IpAddr>().ok())
+ });
if let Some(forwardedfor) = forwardedfor {
- return Ok(RequestIp(forwardedfor))
+ return Ok(RequestIp(forwardedfor));
}
- let realip = headers.get("x-real-ip")
- .and_then(|hv| hv.to_str().ok())
- .and_then(|s| s.parse::<IpAddr>().ok());
+ let realip = headers
+ .get("x-real-ip")
+ .and_then(|hv| hv.to_str().ok())
+ .and_then(|s| s.parse::<IpAddr>().ok());
if let Some(realip) = realip {
- return Ok(RequestIp(realip))
+ return Ok(RequestIp(realip));
}
- let realip = headers.get("x-real-ip")
- .and_then(|hv| hv.to_str().ok())
- .and_then(|s| s.parse::<IpAddr>().ok());
+ let realip = headers
+ .get("x-real-ip")
+ .and_then(|hv| hv.to_str().ok())
+ .and_then(|s| s.parse::<IpAddr>().ok());
if let Some(realip) = realip {
- return Ok(RequestIp(realip))
+ return Ok(RequestIp(realip));
}
let info = parts.extensions.get::<ConnectInfo<SocketAddr>>();
if let Some(info) = info {
- return Ok(RequestIp(info.0.ip()))
+ return Ok(RequestIp(info.0.ip()));
}
Err(ResponseCode::Forbidden.text("You have no ip"))
@@ -163,7 +169,6 @@ where
type Rejection = Response;
async fn from_request(req: Request<B>, state: &S) -> Result<Self> {
-
let bytes = match read_body(req, state).await {
Ok(body) => body,
Err(err) => return Err(err),
@@ -171,7 +176,7 @@ where
let mut reader = Reader::new(Cursor::new(bytes));
reader.set_format(ImageFormat::Png);
-
+
let Ok(img) = reader.decode() else {
return Err(ResponseCode::BadRequest.text("Failed to decode png image"))
};
@@ -238,7 +243,6 @@ where
B::Error: Into<BoxError>,
S: Send + Sync,
{
-
let Ok(RequestIp(ip)) = req.extract_parts::<RequestIp>().await else {
tracing::error!("Failed to read client ip");
return Err(ResponseCode::InternalServerError.text("Failed to read client ip"));
@@ -255,14 +259,7 @@ where
return Err(ResponseCode::BadRequest.text("Request can be at most 512kb"));
};
- console::log(
- ip,
- method,
- uri,
- Some(path.to_string()),
- None,
- )
- .await;
+ console::log(ip, method, uri, Some(path.to_string()), None).await;
Ok(bytes.bytes().flatten().collect())
}