Separate id generation and persisting
Diff
src/io.rs | 15 ++++++++++-----
src/main.rs | 12 ++++++++++--
2 files changed, 14 insertions(+), 13 deletions(-)
@@ -30,17 +30,16 @@
}
}
pub fn store_paste(content: String) -> String {
pub fn generate_id() -> String {
thread_local!(static KEYGEN: RefCell<gpw::PasswordGenerator> = RefCell::new(gpw::PasswordGenerator::default()));
let id = KEYGEN.with(|k| k.borrow_mut().next().unwrap());
KEYGEN.with(|k| k.borrow_mut().next().unwrap())
}
pub fn store_paste(id: String, content: String) {
purge_old();
ENTRIES.write().unwrap().insert(id.clone(), content);
id
ENTRIES.write().unwrap().insert(id, content);
}
@@ -12,7 +12,7 @@
mod highlight;
mod params;
use io::{store_paste, get_paste};
use io::{store_paste, get_paste, generate_id};
use highlight::highlight;
use params::{IsPlaintextRequest, HostHeader};
@@ -52,7 +52,8 @@
#[post("/", data = "<input>")]
fn submit(input: Form<IndexForm>) -> Redirect {
let id = store_paste(input.into_inner().val);
let id = generate_id();
store_paste(id.clone(), input.into_inner().val);
Redirect::to(uri!(render: id))
}
@@ -61,11 +62,12 @@
let mut data = String::new();
input.open().take(1024 * 1000).read_to_string(&mut data)?;
let paste = store_paste(data);
let id = generate_id();
store_paste(id.clone(), data);
match *host {
Some(host) => Ok(format!("https://{}/{}", host, paste)),
None => Ok(paste)
Some(host) => Ok(format!("https://{}/{}", host, id)),
None => Ok(id)
}
}