From e17cffd340476470546e5c27ff03fa134b6e2236 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Sun, 11 Nov 2018 01:12:38 +0100 Subject: main(): Get a map of POST params Move the call to `params::parse()` from `request::verified()` into `main()`. This enables us to access values from POST params inside the `main()` function. We'll need this to store purchaser name and email address. --- license-generator/src/lib.rs | 3 +-- license-generator/src/main.rs | 4 +++- license-generator/src/params.rs | 2 +- license-generator/src/request.rs | 11 +++++++---- 4 files changed, 12 insertions(+), 8 deletions(-) (limited to 'license-generator/src') diff --git a/license-generator/src/lib.rs b/license-generator/src/lib.rs index 407097a..f83dbbf 100644 --- a/license-generator/src/lib.rs +++ b/license-generator/src/lib.rs @@ -8,10 +8,9 @@ extern crate sha1; extern crate url; -mod params; - pub mod database; pub mod errors; +pub mod params; pub mod purchaser; pub mod request; pub mod response; diff --git a/license-generator/src/main.rs b/license-generator/src/main.rs index 4e47c33..3fe03ed 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; use license_generator::request; use license_generator::response; @@ -102,7 +103,8 @@ fn main() -> Result<()> { }, }; - let is_verified = match request::verified(¶ms) { + let ps = params::parse(¶ms); + let is_verified = match request::verified(&ps) { Ok(v) => v, Err(e) => { error!("{}", e); diff --git a/license-generator/src/params.rs b/license-generator/src/params.rs index 1b234e7..836e920 100644 --- a/license-generator/src/params.rs +++ b/license-generator/src/params.rs @@ -3,7 +3,7 @@ use std::collections::BTreeMap; use url::form_urlencoded; -pub(crate) fn parse<'a>(params: &'a str) -> BTreeMap, Cow<'a, str>> { +pub fn parse<'a>(params: &'a str) -> BTreeMap, Cow<'a, str>> { let iter = form_urlencoded::parse(params.as_bytes()); let mut dict = BTreeMap::new(); diff --git a/license-generator/src/request.rs b/license-generator/src/request.rs index 190a756..fd5b556 100644 --- a/license-generator/src/request.rs +++ b/license-generator/src/request.rs @@ -1,11 +1,14 @@ +use std::borrow::Cow; +use std::collections::BTreeMap; + use paddle; use errors::*; -use params; -pub fn verified(req_params: &str) -> Result { - let p = params::parse(&req_params); +pub fn verified<'a>( + req_params: &BTreeMap, Cow<'a, str>> +) -> Result { let pem = include_bytes!("../private/paddle.pubkey.asc"); - Ok(paddle::verify_signature(pem, p)?) + Ok(paddle::verify_signature(pem, req_params.clone())?) } -- cgit v1.2.3