Skip to content

Commit d626264

Browse files
committed
Add snapshot list message adapter to client
1 parent d7f290e commit d626264

File tree

4 files changed

+48
-5
lines changed

4 files changed

+48
-5
lines changed

mithril-client/src/aggregator.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,13 @@ use thiserror::Error;
1616
use mithril_common::{
1717
certificate_chain::{CertificateRetriever, CertificateRetrieverError},
1818
entities::{Certificate, Snapshot},
19-
messages::{CertificateMessage, SnapshotMessage},
19+
messages::{CertificateMessage, SnapshotListMessage, SnapshotMessage},
2020
MITHRIL_API_VERSION,
2121
};
2222

23-
use crate::{FromCertificateMessageAdapter, FromSnapshotMessageAdapter};
23+
use crate::{
24+
FromCertificateMessageAdapter, FromSnapshotListMessageAdapter, FromSnapshotMessageAdapter,
25+
};
2426

2527
/// [AggregatorHandler] related errors.
2628
#[derive(Error, Debug)]
@@ -173,8 +175,8 @@ impl AggregatorHandler for AggregatorHTTPClient {
173175

174176
match response {
175177
Ok(response) => match response.status() {
176-
StatusCode::OK => match response.json::<Vec<Snapshot>>().await {
177-
Ok(snapshots) => Ok(snapshots),
178+
StatusCode::OK => match response.json::<SnapshotListMessage>().await {
179+
Ok(snapshots) => Ok(FromSnapshotListMessageAdapter::adapt(snapshots)),
178180
Err(err) => Err(AggregatorHandlerError::JsonParseFailed(err.to_string())),
179181
},
180182
StatusCode::PRECONDITION_FAILED => Err(self.handle_api_error(&response)),

mithril-client/src/lib.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ mod runtime;
1919

2020
pub use aggregator::{AggregatorHTTPClient, AggregatorHandler, AggregatorHandlerError};
2121
pub use entities::Config;
22-
pub use message_adapters::{FromCertificateMessageAdapter, FromSnapshotMessageAdapter};
22+
pub use message_adapters::{
23+
FromCertificateMessageAdapter, FromSnapshotListMessageAdapter, FromSnapshotMessageAdapter,
24+
};
2325
pub use runtime::{Runtime, RuntimeError};
2426

2527
pub use runtime::convert_to_field_items;
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
use mithril_common::entities::Snapshot;
2+
use mithril_common::messages::SnapshotListMessage;
3+
4+
/// Adapter to convert [SnapshotListMessage] to [SnapshotList] instances
5+
pub struct FromSnapshotListMessageAdapter;
6+
7+
impl FromSnapshotListMessageAdapter {
8+
/// Method to trigger the conversion
9+
pub fn adapt(snapshot_list_message: SnapshotListMessage) -> Vec<Snapshot> {
10+
snapshot_list_message
11+
.into_iter()
12+
.map(|snapshot_list_item_message| Snapshot {
13+
digest: snapshot_list_item_message.digest,
14+
beacon: snapshot_list_item_message.beacon,
15+
certificate_hash: snapshot_list_item_message.certificate_hash,
16+
size: snapshot_list_item_message.size,
17+
created_at: snapshot_list_item_message.created_at,
18+
locations: snapshot_list_item_message.locations,
19+
})
20+
.collect()
21+
}
22+
}
23+
24+
#[cfg(test)]
25+
mod tests {
26+
use mithril_common::messages::SnapshotListItemMessage;
27+
28+
use super::*;
29+
30+
#[test]
31+
fn adapt_ok() {
32+
let snapshot_list_message: SnapshotListMessage = vec![SnapshotListItemMessage::dummy()];
33+
let snapshot_list = FromSnapshotListMessageAdapter::adapt(snapshot_list_message.clone());
34+
35+
assert_eq!(snapshot_list_message[0].digest, snapshot_list[0].digest);
36+
}
37+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
mod from_certificate_message_adapter;
2+
mod from_snapshot_list_message;
23
mod from_snapshot_message;
34

45
pub use from_certificate_message_adapter::FromCertificateMessageAdapter;
6+
pub use from_snapshot_list_message::FromSnapshotListMessageAdapter;
57
pub use from_snapshot_message::FromSnapshotMessageAdapter;

0 commit comments

Comments
 (0)