diff options
-rw-r--r-- | license-generator/src/bin/license-generator.rs | 37 | ||||
-rw-r--r-- | license-generator/src/errors.rs | 2 | ||||
-rw-r--r-- | license-generator/src/purchaser.rs | 6 |
3 files changed, 40 insertions, 5 deletions
diff --git a/license-generator/src/bin/license-generator.rs b/license-generator/src/bin/license-generator.rs index d99af57..e19ac85 100644 --- a/license-generator/src/bin/license-generator.rs +++ b/license-generator/src/bin/license-generator.rs @@ -4,11 +4,14 @@ extern crate fastcgi; extern crate log; extern crate mysql; extern crate simplelog; +extern crate url; extern crate license_generator; use std::io::{Read, Write}; +use url::Url; + use license_generator::database; use license_generator::errors::*; use license_generator::logger; @@ -79,9 +82,39 @@ fn main() -> Result<()> { Ok(_) => { // TODO: Print message to be appended to user email - write!(&mut req.stdout(), "Content-Type: text/plain + let secret = match purchaser.secret { + Some(s) => s, + None => return response::error_500( + &mut req.stdout(), + Some("Empty secret".into()) + ), + }; + + let license_download_url = match Url::parse_with_params( + "https://domekey.teddywing.com/license", + &[ + ("name", purchaser.name), + ("email", purchaser.email), + ("secret", &secret), + ], + ) { + Ok(u) => u, + Err(e) => return response::error_500( + &mut req.stdout(), + Some(e.into()) + ), + }; + + write!( + &mut req.stdout(), + "Content-Type: text/plain + +Thanks so much for purchasing DomeKey! -200 OK") +Download your license here: +{url}", + url = license_download_url, + ) .unwrap_or(()); return; diff --git a/license-generator/src/errors.rs b/license-generator/src/errors.rs index 2d1182b..79bc49b 100644 --- a/license-generator/src/errors.rs +++ b/license-generator/src/errors.rs @@ -2,6 +2,7 @@ use aquatic_prime; use log; use mysql; use paddle; +use url; use zip_lib; error_chain! { @@ -12,6 +13,7 @@ error_chain! { Log(log::SetLoggerError); MySql(mysql::error::Error); + UrlParse(url::ParseError); Zip(zip_lib::result::ZipError); AquaticPrime(aquatic_prime::errors::Error); diff --git a/license-generator/src/purchaser.rs b/license-generator/src/purchaser.rs index 60e389a..1fe1ec6 100644 --- a/license-generator/src/purchaser.rs +++ b/license-generator/src/purchaser.rs @@ -6,9 +6,9 @@ use sha1; use errors::*; pub struct Purchaser<'a> { - name: &'a str, - email: &'a str, - secret: Option<String>, + pub name: &'a str, + pub email: &'a str, + pub secret: Option<String>, } impl<'a> Purchaser<'a> { |