Fetch CAS blobs over Iroh
This commit is contained in:
parent
d5a548182b
commit
e4b788fec2
10 changed files with 425 additions and 19 deletions
|
|
@ -48,6 +48,10 @@ pub enum ControlRequest {
|
|||
hash: BlobHash,
|
||||
out: PathBuf,
|
||||
},
|
||||
CasFetch {
|
||||
node: String,
|
||||
hash: BlobHash,
|
||||
},
|
||||
CasHash {
|
||||
path: PathBuf,
|
||||
},
|
||||
|
|
@ -269,6 +273,16 @@ pub enum ControlResponse {
|
|||
out: PathBuf,
|
||||
size_bytes: u64,
|
||||
},
|
||||
CasFetched {
|
||||
peer_node_id: String,
|
||||
peer_agent_id: String,
|
||||
endpoint_id: String,
|
||||
hash: BlobHash,
|
||||
size_bytes: u64,
|
||||
allowed: bool,
|
||||
reason: String,
|
||||
note: String,
|
||||
},
|
||||
CasHash {
|
||||
hash: BlobHash,
|
||||
},
|
||||
|
|
@ -467,6 +481,11 @@ pub enum PeerControlRequest {
|
|||
capability: String,
|
||||
nonce: String,
|
||||
},
|
||||
CasFetch {
|
||||
peer_card: PeerCard,
|
||||
hash: BlobHash,
|
||||
nonce: String,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
|
||||
|
|
@ -494,6 +513,20 @@ pub enum PeerControlResponse {
|
|||
nonce: String,
|
||||
note: String,
|
||||
},
|
||||
CasFetched {
|
||||
node_id: String,
|
||||
agent_id: String,
|
||||
endpoint_id: String,
|
||||
remote_endpoint_id: String,
|
||||
hash: BlobHash,
|
||||
size_bytes: u64,
|
||||
content_base64: Option<String>,
|
||||
allowed: bool,
|
||||
reason: String,
|
||||
evaluated_ops: usize,
|
||||
nonce: String,
|
||||
note: String,
|
||||
},
|
||||
Error {
|
||||
message: String,
|
||||
},
|
||||
|
|
@ -568,6 +601,15 @@ mod tests {
|
|||
response
|
||||
);
|
||||
|
||||
let request = ControlRequest::CasFetch {
|
||||
node: "node:peer".to_owned(),
|
||||
hash: "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef".into(),
|
||||
};
|
||||
assert_eq!(
|
||||
decode_request(&encode_request(&request).expect("encode")).expect("decode"),
|
||||
request
|
||||
);
|
||||
|
||||
let request = ControlRequest::SshRevocationExport {
|
||||
out: PathBuf::from("revocations.krl-spec"),
|
||||
format: "openssh-krl-spec".to_owned(),
|
||||
|
|
@ -700,5 +742,25 @@ mod tests {
|
|||
.expect("decode"),
|
||||
response
|
||||
);
|
||||
|
||||
let response = PeerControlResponse::CasFetched {
|
||||
node_id: "node:peer".to_owned(),
|
||||
agent_id: "agent:peer".to_owned(),
|
||||
endpoint_id: "endpoint:peer".to_owned(),
|
||||
remote_endpoint_id: "endpoint:caller".to_owned(),
|
||||
hash: "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef".into(),
|
||||
size_bytes: 5,
|
||||
content_base64: Some("aGVsbG8".to_owned()),
|
||||
allowed: true,
|
||||
reason: "direct grant".to_owned(),
|
||||
evaluated_ops: 1,
|
||||
nonce: "nonce".to_owned(),
|
||||
note: "cas fetch".to_owned(),
|
||||
};
|
||||
assert_eq!(
|
||||
decode_peer_response(&encode_peer_response(&response).expect("encode"))
|
||||
.expect("decode"),
|
||||
response
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue