From d87ed40cd99f6c7dae019cc13b0a16db65d847e5 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Sat, 10 Nov 2018 13:58:03 +0100 Subject: Parse POST params to a `BTreeMap` We want a dictionary to be able to remove the Paddle `p_signature` entry. --- license-generator/src/lib.rs | 2 ++ license-generator/src/main.rs | 5 +++++ license-generator/src/params.rs | 14 ++++++++++++++ 3 files changed, 21 insertions(+) create mode 100644 license-generator/src/params.rs (limited to 'license-generator/src') diff --git a/license-generator/src/lib.rs b/license-generator/src/lib.rs index 8061142..64d96e9 100644 --- a/license-generator/src/lib.rs +++ b/license-generator/src/lib.rs @@ -4,8 +4,10 @@ extern crate log; extern crate mysql; extern crate rand; extern crate sha1; +extern crate url; pub mod database; pub mod errors; +pub mod params; pub mod purchaser; diff --git a/license-generator/src/main.rs b/license-generator/src/main.rs index d428af4..43a9d77 100644 --- a/license-generator/src/main.rs +++ b/license-generator/src/main.rs @@ -15,6 +15,7 @@ use simplelog::{Config, LevelFilter, WriteLogger}; use license_generator::database; use license_generator::errors::*; +use license_generator::params; use license_generator::purchaser::Purchaser; fn main() -> Result<()> { @@ -61,6 +62,10 @@ fn main() -> Result<()> { write!(&mut req.stdout(), "\n\nstdin: {}\n", stdin) .unwrap_or(()); + + let p = params::parse(&stdin); + write!(&mut req.stdout(), "\n{:?}\n", p) + .unwrap_or(()); }); Ok(()) diff --git a/license-generator/src/params.rs b/license-generator/src/params.rs new file mode 100644 index 0000000..80136c2 --- /dev/null +++ b/license-generator/src/params.rs @@ -0,0 +1,14 @@ +use std::collections::BTreeMap; + +use url::form_urlencoded; + +pub fn parse(params: &str) -> BTreeMap { + let iter = form_urlencoded::parse(params.as_bytes()).into_owned(); + let mut dict = BTreeMap::new(); + + for (key, value) in iter { + dict.insert(key, value); + } + + dict +} -- cgit v1.2.3