make titlebot default the mime to text/html

This commit is contained in:
lemonsh 2022-07-20 23:39:14 +02:00
parent 4a19c2ce5a
commit c7ce19275a

View file

@ -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))
}
}
}