From e88efdae568aac340e029c4e2ca3628af47e3458 Mon Sep 17 00:00:00 2001 From: Edward Shen Date: Wed, 1 May 2019 17:24:18 -0400 Subject: [PATCH] added option to not follow redirects --- src/config.rs | 1 + src/updater.rs | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/config.rs b/src/config.rs index fa50c91..764788a 100644 --- a/src/config.rs +++ b/src/config.rs @@ -7,6 +7,7 @@ pub struct EndpointConfig { pub port: Option, pub code: Option, pub body: Option, + pub follow_redirects: Option, } #[derive(Deserialize, Serialize, Debug, Clone)] diff --git a/src/updater.rs b/src/updater.rs index 6ad490d..0623b3f 100644 --- a/src/updater.rs +++ b/src/updater.rs @@ -4,7 +4,7 @@ use crate::{ State, }; use chrono::prelude::*; -use reqwest::{Client, Url, UrlError}; +use reqwest::{Client, RedirectPolicy, Url, UrlError}; pub fn update_state(state: State) { let new_statuses = { Some(update_status(&state.read().unwrap().config)) }; @@ -15,12 +15,18 @@ pub fn update_state(state: State) { } pub fn update_status(config: &Config) -> Vec { - let client = Client::new(); let mut results: Vec = Vec::with_capacity(config.websites.len()); for website_conf in &config.websites { let mut group = Vec::with_capacity(website_conf.endpoints.len()); for endpoint in &website_conf.endpoints { + let mut client_builder = Client::builder(); + + if let Some(false) = endpoint.follow_redirects { + client_builder = client_builder.redirect(RedirectPolicy::none()); + } + + let client = client_builder.build().unwrap(); group.push(get_result(website_conf, &client, endpoint)); }