Adding a user agent. Fixes #1769 (#1800)

* Adding a user agent. Fixes #1769

* Fix client duplicate creation.
This commit is contained in:
Dessalines 2021-09-29 16:05:38 -04:00 committed by GitHub
parent 5a281445a3
commit 9c50cbf431
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 6 deletions

View file

@ -89,7 +89,7 @@ where
private_key: actor.private_key().context(location_info!())?, private_key: actor.private_key().context(location_info!())?,
}; };
if env::var("LEMMY_TEST_SEND_SYNC").is_ok() { if env::var("LEMMY_TEST_SEND_SYNC").is_ok() {
do_send(message, &Client::default()).await?; do_send(message, context.client()).await?;
} else { } else {
context.activity_queue.queue::<SendActivityTask>(message)?; context.activity_queue.queue::<SendActivityTask>(message)?;
} }

View file

@ -1,4 +1,4 @@
use crate::{settings::structs::Settings, LemmyError}; use crate::{settings::structs::Settings, version::VERSION, LemmyError};
use anyhow::anyhow; use anyhow::anyhow;
use log::error; use log::error;
use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC}; use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC};
@ -216,17 +216,30 @@ async fn is_image_content_type(client: &Client, test: &Url) -> Result<(), LemmyE
} }
} }
pub fn build_user_agent(settings: &Settings) -> String {
format!(
"Lemmy/{}; +{}",
VERSION,
settings.get_protocol_and_hostname()
)
}
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::request::fetch_site_metadata; use crate::request::{build_user_agent, fetch_site_metadata};
use url::Url; use url::Url;
use super::SiteMetadata; use super::SiteMetadata;
use crate::settings::structs::Settings;
// These helped with testing // These helped with testing
#[actix_rt::test] #[actix_rt::test]
async fn test_site_metadata() { async fn test_site_metadata() {
let client = reqwest::Client::default(); let settings = Settings::init().unwrap();
let client = reqwest::Client::builder()
.user_agent(build_user_agent(&settings))
.build()
.unwrap();
let sample_url = Url::parse("https://www.redspark.nu/en/peoples-war/district-leader-of-chand-led-cpn-arrested-in-bhojpur/").unwrap(); let sample_url = Url::parse("https://www.redspark.nu/en/peoples-war/district-leader-of-chand-led-cpn-arrested-in-bhojpur/").unwrap();
let sample_res = fetch_site_metadata(&client, &sample_url).await.unwrap(); let sample_res = fetch_site_metadata(&client, &sample_url).await.unwrap();
assert_eq!( assert_eq!(

View file

@ -17,6 +17,7 @@ use lemmy_routes::{feeds, images, nodeinfo, webfinger};
use lemmy_server::{api_routes, code_migrations::run_advanced_migrations, scheduled_tasks}; use lemmy_server::{api_routes, code_migrations::run_advanced_migrations, scheduled_tasks};
use lemmy_utils::{ use lemmy_utils::{
rate_limit::{rate_limiter::RateLimiter, RateLimit}, rate_limit::{rate_limiter::RateLimiter, RateLimit},
request::build_user_agent,
settings::structs::Settings, settings::structs::Settings,
LemmyError, LemmyError,
}; };
@ -72,6 +73,10 @@ async fn main() -> Result<(), LemmyError> {
settings.bind, settings.port settings.bind, settings.port
); );
let client = Client::builder()
.user_agent(build_user_agent(&settings))
.build()?;
let activity_queue = create_activity_queue(); let activity_queue = create_activity_queue();
let chat_server = ChatServer::startup( let chat_server = ChatServer::startup(
@ -79,7 +84,7 @@ async fn main() -> Result<(), LemmyError> {
rate_limiter.clone(), rate_limiter.clone(),
|c, i, o, d| Box::pin(match_websocket_operation(c, i, o, d)), |c, i, o, d| Box::pin(match_websocket_operation(c, i, o, d)),
|c, i, o, d| Box::pin(match_websocket_operation_crud(c, i, o, d)), |c, i, o, d| Box::pin(match_websocket_operation_crud(c, i, o, d)),
Client::default(), client.clone(),
activity_queue.clone(), activity_queue.clone(),
settings.clone(), settings.clone(),
secret.clone(), secret.clone(),
@ -92,7 +97,7 @@ async fn main() -> Result<(), LemmyError> {
let context = LemmyContext::create( let context = LemmyContext::create(
pool.clone(), pool.clone(),
chat_server.to_owned(), chat_server.to_owned(),
Client::default(), client.clone(),
activity_queue.to_owned(), activity_queue.to_owned(),
settings.to_owned(), settings.to_owned(),
secret.to_owned(), secret.to_owned(),