Change Input of dp trait to use String
This commit is contained in:
parent
fbe795eafc
commit
7d98970eba
|
@ -9,7 +9,7 @@ use tempfile;
|
|||
use url;
|
||||
use pathdiff::diff_paths;
|
||||
|
||||
use sequoia_openpgp::armor::{Writer, Kind};
|
||||
//use sequoia_openpgp::armor::{Writer, Kind};
|
||||
|
||||
use database::{Database, Delete, Verify};
|
||||
use types::{Email, Fingerprint, KeyID};
|
||||
|
@ -178,7 +178,7 @@ impl Database for Filesystem {
|
|||
}
|
||||
|
||||
fn update(
|
||||
&self, fpr: &Fingerprint, new: Option<&[u8]>,
|
||||
&self, fpr: &Fingerprint, new: Option<String>,
|
||||
) -> Result<()> {
|
||||
let target = self.path_to_fingerprint(fpr);
|
||||
let dir = self.base.join("scratch_pad");
|
||||
|
@ -190,13 +190,7 @@ impl Database for Filesystem {
|
|||
.rand_bytes(16)
|
||||
.tempfile_in(dir)?;
|
||||
|
||||
{
|
||||
let mut armor_writer = Writer::new(&mut tmp, Kind::PublicKey,
|
||||
&[][..])?;
|
||||
|
||||
armor_writer.write_all(new)?;
|
||||
}
|
||||
|
||||
tmp.write_all(new.as_bytes()).unwrap();
|
||||
let _ = tmp.persist(ensure_parent(&target)?)?;
|
||||
|
||||
// fix permissions to 640
|
||||
|
|
|
@ -52,12 +52,12 @@ impl Database for Memory {
|
|||
}
|
||||
|
||||
fn update(
|
||||
&self, fpr: &Fingerprint, new: Option<&[u8]>,
|
||||
&self, fpr: &Fingerprint, new: Option<String>,
|
||||
) -> Result<()> {
|
||||
let mut fprs = self.fpr.lock();
|
||||
|
||||
if let Some(new) = new {
|
||||
fprs.insert(fpr.clone(), String::from_utf8_lossy(new).to_string());
|
||||
fprs.insert(fpr.clone(), new);
|
||||
} else {
|
||||
fprs.remove(fpr);
|
||||
}
|
||||
|
|
|
@ -9,6 +9,9 @@ use sequoia_openpgp::{
|
|||
};
|
||||
use sequoia_openpgp::PacketPile;
|
||||
|
||||
use std::io::Write;
|
||||
use sequoia_openpgp::armor::{Writer, Kind};
|
||||
|
||||
use serde::{Deserialize, Deserializer, Serializer};
|
||||
use time;
|
||||
use types::{Email, Fingerprint, KeyID};
|
||||
|
@ -108,7 +111,7 @@ pub trait Database: Sync + Send {
|
|||
//
|
||||
// Note: it is up to the caller to serialize writes.
|
||||
fn update(
|
||||
&self, fpr: &Fingerprint, new: Option<&[u8]>,
|
||||
&self, fpr: &Fingerprint, new: Option<String>,
|
||||
) -> Result<()>;
|
||||
|
||||
fn link_email(&self, email: &Email, fpr: &Fingerprint) -> Result<()>;
|
||||
|
@ -271,7 +274,17 @@ pub trait Database: Sync + Send {
|
|||
}
|
||||
};
|
||||
|
||||
self.update(&fpr, Some(&data))?;
|
||||
let mut buf = std::io::Cursor::new(vec![]);
|
||||
{
|
||||
let mut armor_writer = Writer::new(&mut buf, Kind::PublicKey,
|
||||
&[][..])?;
|
||||
|
||||
armor_writer.write_all(&data)?;
|
||||
};
|
||||
let armored = String::from_utf8_lossy(buf.get_ref());
|
||||
|
||||
|
||||
self.update(&fpr, Some(armored.into_owned()))?;
|
||||
|
||||
self.link_subkeys(&fpr, subkeys)?;
|
||||
for email in verified_uids {
|
||||
|
@ -308,7 +321,17 @@ pub trait Database: Sync + Send {
|
|||
.unwrap().into_children().collect::<Vec<_>>();
|
||||
let new = tpk.merge_packets(packet_pile).unwrap();
|
||||
|
||||
self.update(&fpr, Some(&Self::tpk_into_bytes(&new).unwrap()))?;
|
||||
|
||||
let mut buf = std::io::Cursor::new(vec![]);
|
||||
{
|
||||
let mut armor_writer = Writer::new(&mut buf, Kind::PublicKey,
|
||||
&[][..])?;
|
||||
|
||||
armor_writer.write_all(&Self::tpk_into_bytes(&new).unwrap())?;
|
||||
};
|
||||
let armored = String::from_utf8_lossy(buf.get_ref());
|
||||
|
||||
self.update(&fpr, Some(armored.into_owned()))?;
|
||||
self.link_email(&email, &fpr)?;
|
||||
return Ok(Some((email.clone(), fpr.clone())));
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@ impl Database for Polymorphic {
|
|||
}
|
||||
|
||||
fn update(
|
||||
&self, fpr: &Fingerprint, new: Option<&[u8]>,
|
||||
&self, fpr: &Fingerprint, new: Option<String>,
|
||||
) -> Result<()> {
|
||||
match self {
|
||||
&Polymorphic::Memory(ref db) => {
|
||||
|
|
|
@ -313,6 +313,7 @@ fn key_to_hkp_index<'a>(armored: String) -> MyResponse {
|
|||
}
|
||||
|
||||
MyResponse::plain(out)
|
||||
|
||||
}
|
||||
|
||||
#[get("/by-fingerprint/<fpr>")]
|
||||
|
@ -463,6 +464,7 @@ fn files(file: PathBuf, static_dir: State<StaticDir>) -> Option<NamedFile> {
|
|||
fn lookup(
|
||||
db: rocket::State<Polymorphic>, domain: rocket::State<Domain>, key: Option<queries::Hkp>,
|
||||
) -> MyResponse {
|
||||
|
||||
let (maybe_key, index) = match key {
|
||||
Some(queries::Hkp::Fingerprint { ref fpr, index }) => {
|
||||
(db.by_fpr(fpr), index)
|
||||
|
|
Loading…
Reference in New Issue