summaryrefslogtreecommitdiffstats
path: root/store/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'store/src/lib.rs')
-rw-r--r--store/src/lib.rs119
1 files changed, 39 insertions, 80 deletions
diff --git a/store/src/lib.rs b/store/src/lib.rs
index bdd45929..1537f306 100644
--- a/store/src/lib.rs
+++ b/store/src/lib.rs
@@ -802,18 +802,8 @@ pub struct StoreIter {
iter: node::store_iter::Client,
}
-/// Items returned by `StoreIter`.
-#[derive(Debug)]
-pub struct StoreIterItem {
- pub domain: String,
- pub name: String,
- pub network_policy: core::NetworkPolicy,
- pub entries: usize,
- pub store: Store,
-}
-
impl Iterator for StoreIter {
- type Item = StoreIterItem;
+ type Item = (String, String, core::NetworkPolicy, Store);
fn next(&mut self) -> Option<Self::Item> {
let request = self.iter.next_request();
@@ -821,13 +811,11 @@ impl Iterator for StoreIter {
make_request_map!(
self.core.borrow_mut(), request,
|r: node::store_iter::item::Reader|
- Ok(StoreIterItem{
- domain: r.get_domain()?.into(),
- name: r.get_name()?.into(),
- network_policy: r.get_network_policy()?.into(),
- entries: r.get_entries() as usize,
- store: Store::new(self.core.clone(), r.get_name()?, r.get_store()?),
- }))
+ Ok((
+ r.get_domain()?.into(),
+ r.get_name()?.into(),
+ r.get_network_policy()?.into(),
+ Store::new(self.core.clone(), r.get_name()?, r.get_store()?))))
};
doit().ok()
}
@@ -839,31 +827,18 @@ pub struct BindingIter {
iter: node::binding_iter::Client,
}
-/// Items returned by `BindingIter`.
-#[derive(Debug)]
-pub struct BindingIterItem {
- pub label: String,
- pub fingerprint: openpgp::Fingerprint,
- pub binding: Binding,
-}
-
impl Iterator for BindingIter {
- type Item = BindingIterItem;
+ type Item = (String, openpgp::Fingerprint, Binding);
fn next(&mut self) -> Option<Self::Item> {
let request = self.iter.next_request();
let doit = || {
make_request_map!(
self.core.borrow_mut(), request,
- |r: node::binding_iter::item::Reader| {
- let label = String::from(r.get_label()?);
- let binding = Binding::new(self.core.clone(), &label, r.get_binding()?);
- Ok(BindingIterItem{
- label: label,
- fingerprint: openpgp::Fingerprint::from_hex(r.get_fingerprint()?).unwrap(),
- binding: binding,
- })
- })
+ |r: node::binding_iter::item::Reader|
+ Ok((String::from(r.get_label()?),
+ openpgp::Fingerprint::from_hex(r.get_fingerprint()?).unwrap(),
+ Binding::new(self.core.clone(), r.get_label()?, r.get_binding()?))))
};
doit().ok()
}
@@ -875,29 +850,17 @@ pub struct KeyIter {
iter: node::key_iter::Client,
}
-/// Items returned by `KeyIter`.
-#[derive(Debug)]
-pub struct KeyIterItem {
- pub fingerprint: openpgp::Fingerprint,
- pub bindings: usize,
- pub key: Key,
-}
-
impl Iterator for KeyIter {
- type Item = KeyIterItem;
+ type Item = (openpgp::Fingerprint, Key);
fn next(&mut self) -> Option<Self::Item> {
let request = self.iter.next_request();
let doit = || {
make_request_map!(
self.core.borrow_mut(), request,
- |r: node::key_iter::item::Reader| {
- Ok(KeyIterItem{
- fingerprint: openpgp::Fingerprint::from_hex(r.get_fingerprint()?).unwrap(),
- bindings: r.get_bindings() as usize,
- key: Key::new(self.core.clone(), r.get_key()?),
- })
- })
+ |r: node::key_iter::item::Reader|
+ Ok((openpgp::Fingerprint::from_hex(r.get_fingerprint()?).unwrap(),
+ Key::new(self.core.clone(), r.get_key()?))))
};
doit().ok()
}
@@ -1202,19 +1165,17 @@ mod store_test {
fn store_iterator() {
let ctx = make_some_stores();
let mut iter = Store::list(&ctx, "org.sequoia-pgp.tests.f").unwrap();
- let item = iter.next().unwrap();
- assert_eq!(item.domain, "org.sequoia-pgp.tests.foo");
- assert_eq!(item.name, "default");
- assert_eq!(item.network_policy, core::NetworkPolicy::Offline);
- assert_eq!(item.entries, 2);
+ let (domain, name, network_policy, store) = iter.next().unwrap();
+ assert_eq!(domain, "org.sequoia-pgp.tests.foo");
+ assert_eq!(name, "default");
+ assert_eq!(network_policy, core::NetworkPolicy::Offline);
let fp = Fingerprint::from_bytes(b"bbbbbbbbbbbbbbbbbbbb");
- item.store.add("Mister B.", &fp).unwrap();
- let item = iter.next().unwrap();
- assert_eq!(item.domain, "org.sequoia-pgp.tests.foo");
- assert_eq!(item.name, "another store");
- assert_eq!(item.network_policy, core::NetworkPolicy::Offline);
- assert_eq!(item.entries, 0);
- item.store.add("Mister B.", &fp).unwrap();
+ store.add("Mister B.", &fp).unwrap();
+ let (domain, name, network_policy, store) = iter.next().unwrap();
+ assert_eq!(domain, "org.sequoia-pgp.tests.foo");
+ assert_eq!(name, "another store");
+ assert_eq!(network_policy, core::NetworkPolicy::Offline);
+ store.add("Mister B.", &fp).unwrap();
assert!(iter.next().is_none());
}
@@ -1223,15 +1184,15 @@ mod store_test {
let ctx = make_some_stores();
let store = Store::open(&ctx, "default").unwrap();
let mut iter = store.iter().unwrap();
- let item = iter.next().unwrap();
+ let (label, fingerprint, binding) = iter.next().unwrap();
let fp = Fingerprint::from_bytes(b"bbbbbbbbbbbbbbbbbbbb");
- assert_eq!(item.label, "Mister B.");
- assert_eq!(item.fingerprint, fp);
- item.binding.stats().unwrap();
- let item = iter.next().unwrap();
- assert_eq!(item.label, "B4");
- assert_eq!(item.fingerprint, fp);
- item.binding.stats().unwrap();
+ assert_eq!(label, "Mister B.");
+ assert_eq!(fingerprint, fp);
+ binding.stats().unwrap();
+ let (label, fingerprint, binding) = iter.next().unwrap();
+ assert_eq!(label, "B4");
+ assert_eq!(fingerprint, fp);
+ binding.stats().unwrap();
assert!(iter.next().is_none());
}
@@ -1239,14 +1200,12 @@ mod store_test {
fn key_iterator() {
let ctx = make_some_stores();
let mut iter = Store::list_keys(&ctx).unwrap();
- let item = iter.next().unwrap();
- assert_eq!(item.fingerprint, Fingerprint::from_bytes(b"bbbbbbbbbbbbbbbbbbbb"));
- assert_eq!(item.bindings, 2);
- item.key.stats().unwrap();
- let item = iter.next().unwrap();
- assert_eq!(item.fingerprint, Fingerprint::from_bytes(b"cccccccccccccccccccc"));
- assert_eq!(item.bindings, 1);
- item.key.stats().unwrap();
+ let (fingerprint, key) = iter.next().unwrap();
+ assert_eq!(fingerprint, Fingerprint::from_bytes(b"bbbbbbbbbbbbbbbbbbbb"));
+ key.stats().unwrap();
+ let (fingerprint, key) = iter.next().unwrap();
+ assert_eq!(fingerprint, Fingerprint::from_bytes(b"cccccccccccccccccccc"));
+ key.stats().unwrap();
assert!(iter.next().is_none());
}
}