From 4c3783b6ffe6036d9e46298bbbcf5a33495ac7bf Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Sun, 24 Jan 2021 12:36:01 +0100 Subject: [PATCH] desktop: Also use flashvars parameters when running local files --- desktop/src/main.rs | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/desktop/src/main.rs b/desktop/src/main.rs index 890023639..32fe1c3f7 100644 --- a/desktop/src/main.rs +++ b/desktop/src/main.rs @@ -140,13 +140,16 @@ fn main() { } } -fn load_movie_from_path(movie_url: Url, opt: &Opt) -> Result> { +fn load_movie_from_path( + movie_url: Url, + proxy: Option<&Url>, +) -> Result> { if movie_url.scheme() == "file" { if let Ok(path) = movie_url.to_file_path() { return SwfMovie::from_path(path); } } - let proxy = opt.proxy.as_ref().and_then(|url| url.as_str().parse().ok()); + let proxy = proxy.and_then(|url| url.as_str().parse().ok()); let builder = HttpClient::builder() .proxy(proxy) .redirect_policy(RedirectPolicy::Follow); @@ -155,10 +158,11 @@ fn load_movie_from_path(movie_url: Url, opt: &Opt) -> Result = Vec::new(); res.into_body().read_to_end(&mut buffer)?; - let mut movie = SwfMovie::from_data(&buffer, Some(movie_url.to_string()))?; + SwfMovie::from_data(&buffer, Some(movie_url.to_string())) +} - // Set query parameters. - for parameter in &opt.parameters { +fn set_movie_parameters(movie: &mut SwfMovie, parameters: &[String]) { + for parameter in parameters { let mut split = parameter.splitn(2, '='); if let (Some(key), Some(value)) = (split.next(), split.next()) { movie.parameters_mut().insert(key, value.to_string(), true); @@ -168,8 +172,6 @@ fn load_movie_from_path(movie_url: Url, opt: &Opt) -> Result Result<(), Box> { @@ -200,7 +202,8 @@ fn run_player(opt: Opt) -> Result<(), Box> { } }; - let movie = load_movie_from_path(movie_url.to_owned(), &opt)?; + let mut movie = load_movie_from_path(movie_url.to_owned(), opt.proxy.as_ref())?; + set_movie_parameters(&mut movie, &opt.parameters); let movie_size = LogicalSize::new(movie.width(), movie.height()); let icon_bytes = include_bytes!("../assets/favicon-32.rgba"); @@ -457,7 +460,8 @@ fn run_timedemo(opt: Opt) -> Result<(), Box> { None => return Err("Input file necessary for timedemo".into()), }; - let movie = load_movie_from_path(movie_url, &opt)?; + let mut movie = load_movie_from_path(movie_url, opt.proxy.as_ref())?; + set_movie_parameters(&mut movie, &opt.parameters); let movie_frames = Some(movie.header().num_frames); let viewport_width = 1920;