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