From 8c02a8116e77b58fa22bdb148e958967b9e5652d Mon Sep 17 00:00:00 2001 From: Fintan Halpenny Date: Fri, 3 Mar 2023 10:47:30 +0000 Subject: [PATCH] radicle: add delegates to ReadRepository Getting delegates for a repository is a common task. A method is added to ReadRepository for this, which default to fetching the identity document, verifying it, and return the delegates for that identity. --- radicle/src/storage.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/radicle/src/storage.rs b/radicle/src/storage.rs index e6392d1e..c1429974 100644 --- a/radicle/src/storage.rs +++ b/radicle/src/storage.rs @@ -6,6 +6,7 @@ use std::ops::Deref; use std::path::{Path, PathBuf}; use std::{fmt, io}; +use nonempty::NonEmpty; use serde::{Deserialize, Serialize}; use thiserror::Error; @@ -18,6 +19,7 @@ use crate::git::ext as git_ext; use crate::git::{Qualified, RefError, RefString}; use crate::identity; use crate::identity::doc::DocError; +use crate::identity::Did; use crate::identity::{Id, IdError, IdentityError}; use crate::storage::refs::Refs; @@ -356,6 +358,14 @@ pub trait ReadRepository { /// Get all remotes. fn remotes(&self) -> Result, refs::Error>; + /// Get repository delegates. + fn delegates(&self) -> Result, IdentityError> { + let (_, doc) = self.identity_doc()?; + let doc = doc.verified()?; + + Ok(doc.delegates) + } + /// Get the repository's identity document. fn identity_doc(&self) -> Result<(Oid, identity::Doc), IdentityError>; }