Skip to content

Commit 451a684

Browse files
committed
Close #5
1 parent dfd3967 commit 451a684

3 files changed

Lines changed: 13 additions & 7 deletions

File tree

Cargo.lock

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,4 @@ serde = { version = "1.0", features = ["derive"] }
1515
serde_json = "1.0"
1616
flexi_logger = "0.14.3"
1717
log = "0.4.8"
18+
percent-encoding = "2.1.0"

src/routes/get_file.rs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1+
extern crate percent_encoding;
2+
13
use super::super::config::Config;
24
use super::super::server::Route;
35
use log::warn;
6+
use percent_encoding::percent_decode;
47
use simple_server::{Method, Request, ResponseBuilder, ResponseResult, StatusCode};
58
use std::fs;
69

@@ -9,13 +12,8 @@ pub fn handler(
912
mut response: ResponseBuilder,
1013
_: &Config,
1114
) -> ResponseResult {
12-
let v: Vec<String> = request
13-
.uri()
14-
.to_string()
15-
.split("%2F")
16-
.map(|s| s.to_string())
17-
.collect();
18-
let string = v.join("/");
15+
let parsed_url: Vec<u8> = percent_decode(request.uri().to_string().as_bytes()).collect();
16+
let string = String::from_utf8(parsed_url).expect("BUG: Cannot parse file name from URL");
1917
let file_path = string[22..string.len()].to_string();
2018

2119
match fs::read(file_path) {

0 commit comments

Comments
 (0)