chore: improve code quanity

This commit is contained in:
sigoden
2022-12-11 15:18:44 +08:00
parent 8d9705caa4
commit 628d863d2e
8 changed files with 44 additions and 45 deletions

View File

@@ -213,8 +213,8 @@ impl AuthMethod {
}
AuthMethod::Digest => {
let digest_value = strip_prefix(authorization.as_bytes(), b"Digest ")?;
let digest_vals = to_headermap(digest_value).ok()?;
digest_vals
let digest_map = to_headermap(digest_value).ok()?;
digest_map
.get(b"username".as_ref())
.and_then(|b| std::str::from_utf8(b).ok())
.map(|v| v.to_string())
@@ -251,13 +251,13 @@ impl AuthMethod {
}
AuthMethod::Digest => {
let digest_value = strip_prefix(authorization.as_bytes(), b"Digest ")?;
let digest_vals = to_headermap(digest_value).ok()?;
let digest_map = to_headermap(digest_value).ok()?;
if let (Some(username), Some(nonce), Some(user_response)) = (
digest_vals
digest_map
.get(b"username".as_ref())
.and_then(|b| std::str::from_utf8(b).ok()),
digest_vals.get(b"nonce".as_ref()),
digest_vals.get(b"response".as_ref()),
digest_map.get(b"nonce".as_ref()),
digest_map.get(b"response".as_ref()),
) {
match validate_nonce(nonce) {
Ok(true) => {}
@@ -269,12 +269,12 @@ impl AuthMethod {
let mut ha = Context::new();
ha.consume(method);
ha.consume(b":");
if let Some(uri) = digest_vals.get(b"uri".as_ref()) {
if let Some(uri) = digest_map.get(b"uri".as_ref()) {
ha.consume(uri);
}
let ha = format!("{:x}", ha.compute());
let mut correct_response = None;
if let Some(qop) = digest_vals.get(b"qop".as_ref()) {
if let Some(qop) = digest_map.get(b"qop".as_ref()) {
if qop == &b"auth".as_ref() || qop == &b"auth-int".as_ref() {
correct_response = Some({
let mut c = Context::new();
@@ -282,11 +282,11 @@ impl AuthMethod {
c.consume(b":");
c.consume(nonce);
c.consume(b":");
if let Some(nc) = digest_vals.get(b"nc".as_ref()) {
if let Some(nc) = digest_map.get(b"nc".as_ref()) {
c.consume(nc);
}
c.consume(b":");
if let Some(cnonce) = digest_vals.get(b"cnonce".as_ref()) {
if let Some(cnonce) = digest_map.get(b"cnonce".as_ref()) {
c.consume(cnonce);
}
c.consume(b":");
@@ -375,7 +375,7 @@ fn to_headermap(header: &[u8]) -> Result<HashMap<&[u8], &[u8]>, ()> {
}
i += 1;
}
sep.push(i); // same len for both Vecs
sep.push(i);
i = 0;
let mut ret = HashMap::new();
@@ -384,7 +384,7 @@ fn to_headermap(header: &[u8]) -> Result<HashMap<&[u8], &[u8]>, ()> {
i += 1;
}
if a <= i || k <= 1 + a {
//keys and vals must contain one char
//keys and values must contain one char
return Err(());
}
let key = &header[i..a];

View File

@@ -6,7 +6,7 @@ pub const DEFAULT_LOG_FORMAT: &str = r#"$remote_addr "$request" $status"#;
#[derive(Debug)]
pub struct LogHttp {
elems: Vec<LogElement>,
elements: Vec<LogElement>,
}
#[derive(Debug)]
@@ -19,8 +19,8 @@ enum LogElement {
impl LogHttp {
pub fn data(&self, req: &Request, args: &Arc<Args>) -> HashMap<String, String> {
let mut data = HashMap::default();
for elem in self.elems.iter() {
match elem {
for element in self.elements.iter() {
match element {
LogElement::Variable(name) => match name.as_str() {
"request" => {
data.insert(name.to_string(), format!("{} {}", req.method(), req.uri()));
@@ -47,12 +47,12 @@ impl LogHttp {
data
}
pub fn log(&self, data: &HashMap<String, String>, err: Option<String>) {
if self.elems.is_empty() {
if self.elements.is_empty() {
return;
}
let mut output = String::new();
for elem in self.elems.iter() {
match elem {
for element in self.elements.iter() {
match element {
LogElement::Literal(value) => output.push_str(value.as_str()),
LogElement::Header(name) | LogElement::Variable(name) => {
output.push_str(data.get(name).map(|v| v.as_str()).unwrap_or("-"))
@@ -69,21 +69,21 @@ impl LogHttp {
impl FromStr for LogHttp {
type Err = Box<dyn std::error::Error>;
fn from_str(s: &str) -> Result<Self, Self::Err> {
let mut elems = vec![];
let mut elements = vec![];
let mut is_var = false;
let mut cache = String::new();
for c in format!("{} ", s).chars() {
if c == '$' {
if !cache.is_empty() {
elems.push(LogElement::Literal(cache.to_string()));
elements.push(LogElement::Literal(cache.to_string()));
}
cache.clear();
is_var = true;
} else if is_var && !(c.is_alphanumeric() || c == '_') {
if let Some(value) = cache.strip_prefix("$http_") {
elems.push(LogElement::Header(value.replace('_', "-").to_string()));
elements.push(LogElement::Header(value.replace('_', "-").to_string()));
} else if let Some(value) = cache.strip_prefix('$') {
elems.push(LogElement::Variable(value.to_string()));
elements.push(LogElement::Variable(value.to_string()));
}
cache.clear();
is_var = false;
@@ -92,8 +92,8 @@ impl FromStr for LogHttp {
}
let cache = cache.trim();
if !cache.is_empty() {
elems.push(LogElement::Literal(cache.to_string()));
elements.push(LogElement::Literal(cache.to_string()));
}
Ok(Self { elems })
Ok(Self { elements })
}
}