From c7ce19275a6511f515796820ad513e3a6ae365a9 Mon Sep 17 00:00:00 2001 From: lemonsh Date: Wed, 20 Jul 2022 23:39:14 +0200 Subject: [PATCH] make titlebot default the mime to text/html --- src/commands/title.rs | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/commands/title.rs b/src/commands/title.rs index ec2e893..91a529d 100644 --- a/src/commands/title.rs +++ b/src/commands/title.rs @@ -2,6 +2,7 @@ use crate::bot::{Context, Trigger}; use async_trait::async_trait; use fancy_regex::{Captures, Regex}; use htmlescape::decode_html; +use hyper::header::HeaderValue; use reqwest::Client; pub struct Title { @@ -31,25 +32,25 @@ impl Trigger for Title { let request = self.http.get(url).build()?; let response = self.http.execute(request).await?; let headers = response.headers(); - return if let Some(header) = headers.get("Content-Type") { - let mime = header.to_str()?; - if mime.contains("text/html") { - let body = response.text().await?; - if let Some(tm) = self.title_regex.find(&body)? { - let title_match = &body[tm.start()..tm.end()]; - let result = - decode_html(title_match).unwrap_or_else(|_| title_match.to_string()); - Ok(format!("\x039[Title]\x0311 {}", result)) - } else { - Ok("\x039[Title]\x0311 No title".into()) - } + + let header = headers.get("Content-Type"); + let mime = header + .map(HeaderValue::to_str) + .transpose()? + .unwrap_or("text/html"); + if mime.contains("text/html") { + let body = response.text().await?; + if let Some(tm) = self.title_regex.find(&body)? { + let title_match = tm.as_str(); + let result = decode_html(title_match).unwrap_or_else(|_| title_match.to_string()); + Ok(format!("\x039[Title]\x0311 {}", result)) } else { - let content_length = response.content_length().map(|l| (l / 1024).to_string()); - let size = content_length.as_deref().unwrap_or("unknown"); - Ok(format!("\x039[Title]\x0311 File: {}; {}kb", mime, size)) + Ok("\x039[Title]\x0311 No title".into()) } } else { - Ok("\x039[Title]\x0311 No Content-Type header".into()) - }; + let content_length = response.content_length().map(|l| (l / 1024).to_string()); + let size = content_length.as_deref().unwrap_or("unknown"); + Ok(format!("\x039[Title]\x0311 File: {}; {}kb", mime, size)) + } } }