diff options
author | Teddy Wing | 2018-11-09 17:40:25 +0100 |
---|---|---|
committer | Teddy Wing | 2018-11-09 17:40:25 +0100 |
commit | 51e3dd528919599c3d2beff56c59a4cb7fe24371 (patch) | |
tree | 6722d3b2ef4b57267380e83396456697142800da /license-generator/src | |
parent | 0644f4f05552e4e0eca28a933e99123df50b1dc1 (diff) | |
download | dome-key-web-51e3dd528919599c3d2beff56c59a4cb7fe24371.tar.bz2 |
Extract code in `lib.rs` to `errors.rs` and `purchaser.rs`
Split up the code to get things a bit more organised. I want a function
to create a connection to the MySQL database and I don't want to lump it
in with the rest.
Diffstat (limited to 'license-generator/src')
-rw-r--r-- | license-generator/src/errors.rs | 7 | ||||
-rw-r--r-- | license-generator/src/lib.rs | 71 | ||||
-rw-r--r-- | license-generator/src/purchaser.rs | 62 |
3 files changed, 71 insertions, 69 deletions
diff --git a/license-generator/src/errors.rs b/license-generator/src/errors.rs new file mode 100644 index 0000000..7eb9eda --- /dev/null +++ b/license-generator/src/errors.rs @@ -0,0 +1,7 @@ +use mysql; + +error_chain! { + foreign_links { + MySql(mysql::error::Error); + } +} diff --git a/license-generator/src/lib.rs b/license-generator/src/lib.rs index d15a9cc..fd1bfa8 100644 --- a/license-generator/src/lib.rs +++ b/license-generator/src/lib.rs @@ -4,73 +4,6 @@ extern crate mysql; extern crate rand; extern crate sha1; -mod errors { - use mysql; - error_chain! { - foreign_links { - MySql(mysql::error::Error); - } - } -} - -use rand::Rng; - -use errors::*; - -struct Purchaser<'a> { - name: &'a str, - email: &'a str, - secret: Option<String>, -} - -impl<'a> Purchaser<'a> { - fn new(name: &'a str, email: &'a str) -> Self { - Purchaser { - name: name, - email: email, - secret: None, - } - } - - fn generate_secret(&mut self) { - let mut rng = rand::thread_rng(); - let random: usize = rng.gen_range(1_000_000_000, std::usize::MAX); - - let source = format!("{}{}{}", self.name, self.email, random); - let digest = sha1::Sha1::from(source).hexdigest(); - - self.secret = Some(digest); - } - - fn insert(&self, cx: &mut mysql::Conn) -> Result<()> { - let mut tx = cx.start_transaction( - false, // consistent_snapshot - None, // isolation_level - None, // readonly - )?; - - match self.secret { - Some(ref s) => { - tx.prep_exec(" - INSERT INTO purchasers - (name, email, secret) - VALUES - (?, ?, ?)", - (self.name, self.email, s), - )?; - }, - None => { - tx.prep_exec(" - INSERT INTO purchasers - (name, email) - VALUES - (?, ?)", - (self.name, self.email), - )?; - }, - } - - Ok(()) - } -} +mod errors; +mod purchaser; diff --git a/license-generator/src/purchaser.rs b/license-generator/src/purchaser.rs new file mode 100644 index 0000000..2a7727c --- /dev/null +++ b/license-generator/src/purchaser.rs @@ -0,0 +1,62 @@ +use mysql; +use rand::{self, Rng}; +use sha1; + +use errors::*; + +struct Purchaser<'a> { + name: &'a str, + email: &'a str, + secret: Option<String>, +} + +impl<'a> Purchaser<'a> { + fn new(name: &'a str, email: &'a str) -> Self { + Purchaser { + name: name, + email: email, + secret: None, + } + } + + fn generate_secret(&mut self) { + let mut rng = rand::thread_rng(); + let random: usize = rng.gen_range(1_000_000_000, ::std::usize::MAX); + + let source = format!("{}{}{}", self.name, self.email, random); + let digest = sha1::Sha1::from(source).hexdigest(); + + self.secret = Some(digest); + } + + fn insert(&self, cx: &mut mysql::Conn) -> Result<()> { + let mut tx = cx.start_transaction( + false, // consistent_snapshot + None, // isolation_level + None, // readonly + )?; + + match self.secret { + Some(ref s) => { + tx.prep_exec(" + INSERT INTO purchasers + (name, email, secret) + VALUES + (?, ?, ?)", + (self.name, self.email, s), + )?; + }, + None => { + tx.prep_exec(" + INSERT INTO purchasers + (name, email) + VALUES + (?, ?)", + (self.name, self.email), + )?; + }, + } + + Ok(()) + } +} |