1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use std::time::Duration; /// Note: reqwest allows these only to be specified per-Client. concept-fetch /// allows these to be specified on each call to fetch. I think it's worth /// keeping a single global reqwest::Client in the reqwest backend, to simplify /// the way we abstract away from these. /// /// In the future, should we need it, we might be able to add a CustomClient type /// with custom settings. In the reqwest backend this would store a Client, and /// in the concept-fetch backend it would only store the settings, and populate /// things on the fly. #[derive(Debug, PartialEq)] #[non_exhaustive] pub struct Settings { pub read_timeout: Option<Duration>, pub connect_timeout: Option<Duration>, pub follow_redirects: bool, pub use_caches: bool, } #[cfg(target_os = "ios")] const TIMEOUT_DURATION: Duration = Duration::from_secs(7); #[cfg(not(target_os = "ios"))] const TIMEOUT_DURATION: Duration = Duration::from_secs(10); // The singleton instance of our settings. pub static GLOBAL_SETTINGS: &Settings = &Settings { read_timeout: Some(TIMEOUT_DURATION), connect_timeout: Some(TIMEOUT_DURATION), follow_redirects: true, use_caches: false, };