aboutsummaryrefslogtreecommitdiffstats
path: root/license-generator/src
diff options
context:
space:
mode:
Diffstat (limited to 'license-generator/src')
-rw-r--r--license-generator/src/bin/license-generator.rs37
-rw-r--r--license-generator/src/errors.rs2
-rw-r--r--license-generator/src/purchaser.rs6
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> {