diff --git a/Cargo.toml b/Cargo.toml index 02712ba..a71e10f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,27 +4,32 @@ version = "0.1.0" authors = ["Kai Michaelis "] build = "build.rs" +[workspace] +members = [ + "database", +] + [dependencies] +hagrid-database = { path = "database" } failure = "0.1.5" rocket = "0" rocket_codegen = "0" sequoia-openpgp = { git = "https://gitlab.com/sequoia-pgp/sequoia.git", rev = "e07bb25de0b2291088f88dc5360f3d04f702049c" } multipart = "0" log = "0" -rand = "0.5" +# rand = "0.5" serde = "1.0" serde_derive = "1.0" serde_json = "1.0" time = "0.1" tempfile = "3.0" -parking_lot = "0.6" structopt = "0.2" url = "1.6" -hex = "0.3" +# hex = "0.3" lettre_email = "0.8" handlebars = "1.1.0" -base64 = "0.10" -pathdiff = "0.1" +# base64 = "0.10" +# pathdiff = "0.1" num_cpus = "1.0" fs_extra = "1.0" diff --git a/database/Cargo.toml b/database/Cargo.toml new file mode 100644 index 0000000..1325dd3 --- /dev/null +++ b/database/Cargo.toml @@ -0,0 +1,25 @@ +[package] +name = "hagrid-database" +version = "0.1.0" +authors = ["Kai Michaelis "] + +[dependencies] +failure = "0.1.5" +sequoia-openpgp = { git = "https://gitlab.com/sequoia-pgp/sequoia.git", rev = "e07bb25de0b2291088f88dc5360f3d04f702049c" } +multipart = "0" +log = "0" +rand = "0.5" +serde = { version = "1.0", features = ["derive"] } +serde_derive = "1.0" +serde_json = "1.0" +time = "0.1" +tempfile = "3.0" +parking_lot = "0.6" +url = "1.6" +hex = "0.3" +base64 = "0.10" +pathdiff = "0.1" + +[lib] +name = "hagrid_database" +path = "src/lib.rs" diff --git a/src/database/fs.rs b/database/src/fs.rs similarity index 99% rename from src/database/fs.rs rename to database/src/fs.rs index 10a3a2b..491a026 100644 --- a/src/database/fs.rs +++ b/database/src/fs.rs @@ -11,7 +11,7 @@ use pathdiff::diff_paths; //use sequoia_openpgp::armor::{Writer, Kind}; -use database::{Database, Delete, Verify, Query}; +use {Database, Delete, Verify, Query}; use types::{Email, Fingerprint, KeyID}; use Result; @@ -460,8 +460,8 @@ impl Database for Filesystem { #[cfg(test)] mod tests { use super::*; - use database::test; - use sequoia_openpgp::tpk::TPKBuilder; + use test; + use openpgp::tpk::TPKBuilder; use tempfile::TempDir; #[test] diff --git a/src/database/mod.rs b/database/src/lib.rs similarity index 96% rename from src/database/mod.rs rename to database/src/lib.rs index b372c8b..132b3c5 100644 --- a/src/database/mod.rs +++ b/database/src/lib.rs @@ -1,25 +1,42 @@ -use parking_lot::MutexGuard; +#![feature(proc_macro_hygiene, plugin, decl_macro)] +#![recursion_limit = "1024"] +#![feature(try_from)] + use std::convert::TryFrom; use std::io::Cursor; +use std::io::Write; use std::path::PathBuf; use std::result; use std::str::FromStr; -use sequoia_openpgp::{ - constants::SignatureType, packet::Signature, packet::UserID, parse::Parse, +extern crate failure; +use failure::Error; +use failure::Fallible as Result; +#[macro_use] extern crate log; +extern crate parking_lot; +use parking_lot::MutexGuard; +extern crate pathdiff; +extern crate rand; +extern crate serde; +extern crate serde_json; +extern crate tempfile; +extern crate time; +extern crate url; + +extern crate sequoia_openpgp as openpgp; +use openpgp::{ Packet, TPK, + PacketPile, + armor::{Writer, Kind}, + constants::SignatureType, packet::Signature, packet::UserID, parse::Parse, packet::Tag, - serialize::Serialize, + serialize::Serialize as OpenPgpSerialize, }; -use sequoia_openpgp::PacketPile; -use std::io::Write; -use sequoia_openpgp::armor::{Writer, Kind}; +use serde::{Serialize, Deserialize, Deserializer, Serializer}; -use serde::{Deserialize, Deserializer, Serializer}; -use time; +pub mod types; use types::{Email, Fingerprint, KeyID}; -use Result; mod fs; pub use self::fs::Filesystem; @@ -64,7 +81,7 @@ impl Verify { pub fn new( uid: &UserID, sig: &[Signature], fpr: Fingerprint, ) -> Result { - use sequoia_openpgp::serialize::Serialize; + use openpgp::serialize::Serialize; let mut cur = Cursor::new(Vec::default()); uid.serialize(&mut cur)?; @@ -208,7 +225,7 @@ pub trait Database: Sync + Send { } fn tpk_into_bytes(tpk: &TPK) -> Result> { - use sequoia_openpgp::serialize::Serialize; + use openpgp::serialize::Serialize; use std::io::Cursor; let mut cur = Cursor::new(Vec::default()); @@ -326,7 +343,7 @@ pub trait Database: Sync + Send { } fn merge_or_publish(&self, mut tpk: TPK) -> Result> { - use sequoia_openpgp::RevocationStatus; + use openpgp::RevocationStatus; let fpr = Fingerprint::try_from(tpk.primary().fingerprint())?; let mut all_uids = Vec::default(); diff --git a/src/database/memory.rs b/database/src/memory.rs similarity index 98% rename from src/database/memory.rs rename to database/src/memory.rs index 9fe3da8..30656d6 100644 --- a/src/database/memory.rs +++ b/database/src/memory.rs @@ -1,7 +1,7 @@ use parking_lot::{Mutex, MutexGuard}; use std::collections::HashMap; -use database::{Database, Delete, Verify, Query}; +use {Database, Delete, Verify, Query}; use types::{Email, Fingerprint, KeyID}; use Result; @@ -160,8 +160,8 @@ impl Memory { #[cfg(test)] mod tests { use super::*; - use database::test; - use sequoia_openpgp::tpk::TPKBuilder; + use test; + use openpgp::tpk::TPKBuilder; #[test] fn new() { diff --git a/src/database/poly.rs b/database/src/poly.rs similarity index 98% rename from src/database/poly.rs rename to database/src/poly.rs index 6ec2314..c23ed73 100644 --- a/src/database/poly.rs +++ b/database/src/poly.rs @@ -1,6 +1,6 @@ use std::path::PathBuf; -use database::{Database, Delete, Filesystem, Memory, Verify, Query}; +use {Database, Delete, Filesystem, Memory, Verify, Query}; use Result; use types::{Email, Fingerprint, KeyID}; use parking_lot::MutexGuard; diff --git a/src/database/test.rs b/database/src/test.rs similarity index 99% rename from src/database/test.rs rename to database/src/test.rs index f89d9b5..939d9d0 100644 --- a/src/database/test.rs +++ b/database/src/test.rs @@ -17,9 +17,9 @@ use std::convert::TryFrom; use std::str::FromStr; -use database::Database; -use sequoia_openpgp::tpk::{TPKBuilder, UserIDBinding}; -use sequoia_openpgp::{ +use Database; +use openpgp::tpk::{TPKBuilder, UserIDBinding}; +use openpgp::{ constants::ReasonForRevocation, constants::SignatureType, packet::UserID, parse::Parse, Packet, PacketPile, RevocationStatus, TPK, }; diff --git a/src/types.rs b/database/src/types.rs similarity index 98% rename from src/types.rs rename to database/src/types.rs index 3024ecf..3ebe3d7 100644 --- a/src/types.rs +++ b/database/src/types.rs @@ -2,7 +2,7 @@ use std::convert::TryFrom; use std::result; use std::str::FromStr; -use sequoia_openpgp::{self, packet::UserID}; +use openpgp::packet::UserID; use serde::{Deserialize, Deserializer, Serialize, Serializer}; use {Error, Result}; diff --git a/src/import.rs b/src/import.rs index eee783f..7659fca 100644 --- a/src/import.rs +++ b/src/import.rs @@ -9,42 +9,22 @@ #![recursion_limit = "1024"] #![feature(try_from)] - use std::env; use std::path::PathBuf; use std::thread; use std::cmp; extern crate failure; -use failure::Error; use failure::Fallible as Result; extern crate num_cpus; - -extern crate serde; -#[macro_use] -extern crate serde_derive; -extern crate serde_json; - -extern crate hex; -extern crate time; -extern crate url; - -extern crate sequoia_openpgp; -#[macro_use] -extern crate log; -extern crate parking_lot; -extern crate rand; extern crate tempfile; -extern crate pathdiff; extern crate sequoia_openpgp as openpgp; use openpgp::Packet; use openpgp::parse::{PacketParser, PacketParserResult, Parse}; -mod database; -mod types; - +extern crate hagrid_database as database; use database::{Database, Filesystem}; fn main() { diff --git a/src/mail.rs b/src/mail.rs index b2320aa..91e7a2e 100644 --- a/src/mail.rs +++ b/src/mail.rs @@ -6,7 +6,7 @@ use lettre_email::EmailBuilder; use serde::Serialize; -use types::Email; +use database::types::Email; use Result; #[derive(Serialize, Clone)] diff --git a/src/main.rs b/src/main.rs index 352693d..3ce4b8a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,7 +3,6 @@ #![feature(try_from)] extern crate failure; -use failure::Error; use failure::Fallible as Result; extern crate serde; @@ -11,7 +10,6 @@ extern crate serde; extern crate serde_derive; extern crate serde_json; -extern crate hex; extern crate time; extern crate url; @@ -21,26 +19,19 @@ extern crate multipart; extern crate rocket_contrib; extern crate sequoia_openpgp; -#[macro_use] -extern crate log; -extern crate base64; extern crate handlebars; extern crate lettre; extern crate lettre_email; -extern crate parking_lot; -extern crate rand; extern crate structopt; extern crate tempfile; -extern crate pathdiff; #[cfg(test)] extern crate fs_extra; #[cfg(test)] extern crate regex; -mod database; +extern crate hagrid_database as database; mod mail; -mod types; mod web; use std::path::PathBuf; diff --git a/src/web/mod.rs b/src/web/mod.rs index eec64c4..eac92a5 100644 --- a/src/web/mod.rs +++ b/src/web/mod.rs @@ -17,8 +17,8 @@ mod upload; use mail; use database::{Database, Polymorphic, Query}; +use database::types::{Email, Fingerprint, KeyID}; use Result; -use types::{Email, Fingerprint, KeyID}; use Opt; use std::result; @@ -26,7 +26,7 @@ use std::str::FromStr; mod queries { use std::fmt; - use types::{Email, Fingerprint, KeyID}; + use database::types::{Email, Fingerprint, KeyID}; #[derive(Debug)] pub enum Hkp {