diff --git a/Cargo.lock b/Cargo.lock index a2320fe..b816073 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -926,6 +926,12 @@ dependencies = [ "hashbrown", ] +[[package]] +name = "infer" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea70330449622910e0edebab230734569516269fb32342fb0a8956340fa48c6c" + [[package]] name = "instant" version = "0.1.10" @@ -1241,6 +1247,7 @@ dependencies = [ "dotenv", "env_logger", "futures-util", + "infer", "log", "petname", "rand 0.8.4", diff --git a/Cargo.toml b/Cargo.toml index 14e4d85..23e00b6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,6 +22,10 @@ dotenv = "0.15.0" version = "4.0.12" features = ["serde"] +[dependencies.infer] +version = "0.5.0" +default-features = false + [dev-dependencies] actix-rt = "2.2.0" diff --git a/src/file.rs b/src/file.rs index 3ebdc1d..7e115a8 100644 --- a/src/file.rs +++ b/src/file.rs @@ -52,7 +52,11 @@ pub fn save(mut file_name: &str, bytes: &[u8], config: &Config) -> IoResult(), ); } - path.set_extension(&config.paste.default_extension); + path.set_extension( + infer::get(bytes) + .map(|t| t.extension()) + .unwrap_or(&config.paste.default_extension), + ); } } let mut buffer = File::create(&path)?;