aboutsummaryrefslogtreecommitdiffstats
path: root/license-generator/src/lib.rs
diff options
context:
space:
mode:
authorTeddy Wing2018-11-09 17:40:25 +0100
committerTeddy Wing2018-11-09 17:40:25 +0100
commit51e3dd528919599c3d2beff56c59a4cb7fe24371 (patch)
tree6722d3b2ef4b57267380e83396456697142800da /license-generator/src/lib.rs
parent0644f4f05552e4e0eca28a933e99123df50b1dc1 (diff)
downloaddome-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/lib.rs')
-rw-r--r--license-generator/src/lib.rs71
1 files changed, 2 insertions, 69 deletions
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;