Skip to content

Commit 1dbd1a4

Browse files
committed
Add snapshot list message adapter to aggregator
1 parent d626264 commit 1dbd1a4

File tree

3 files changed

+45
-2
lines changed

3 files changed

+45
-2
lines changed

mithril-aggregator/src/http_server/routes/snapshot_routes.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ fn snapshot_digest(
5757
mod handlers {
5858
use crate::http_server::routes::reply;
5959
use crate::http_server::SERVER_BASE_PATH;
60-
use crate::message_adapters::ToSnapshotMessageAdapter;
60+
use crate::message_adapters::{ToSnapshotListMessageAdapter, ToSnapshotMessageAdapter};
6161
use crate::{Configuration, SnapshotStore};
6262
use slog_scope::{debug, warn};
6363
use std::convert::Infallible;
@@ -72,7 +72,10 @@ mod handlers {
7272
debug!("⇄ HTTP SERVER: snapshots");
7373

7474
match snapshot_store.list_snapshots().await {
75-
Ok(snapshots) => Ok(reply::json(&snapshots, StatusCode::OK)),
75+
Ok(snapshots) => Ok(reply::json(
76+
&ToSnapshotListMessageAdapter::adapt(snapshots),
77+
StatusCode::OK,
78+
)),
7679
Err(err) => {
7780
warn!("snapshots::error"; "error" => ?err);
7881
Ok(reply::internal_server_error(err.to_string()))

mithril-aggregator/src/message_adapters/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@ mod from_register_signer;
33
mod to_certificate_message;
44
mod to_certificate_pending_message;
55
mod to_epoch_settings_message;
6+
mod to_snapshot_list_message;
67
mod to_snasphot_message;
78

89
pub use from_register_signature::FromRegisterSingleSignatureAdapter;
910
pub use from_register_signer::FromRegisterSignerAdapter;
1011
pub use to_certificate_message::ToCertificateMessageAdapter;
1112
pub use to_certificate_pending_message::ToCertificatePendingMessageAdapter;
1213
pub use to_epoch_settings_message::ToEpochSettingsMessageAdapter;
14+
pub use to_snapshot_list_message::ToSnapshotListMessageAdapter;
1315
pub use to_snasphot_message::ToSnapshotMessageAdapter;
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
use mithril_common::entities::Snapshot;
2+
use mithril_common::messages::{SnapshotListItemMessage, SnapshotListMessage};
3+
4+
/// Adapter to convert a list of [Snapshot] to [SnapshotListMessage] instances
5+
pub struct ToSnapshotListMessageAdapter;
6+
7+
impl ToSnapshotListMessageAdapter {
8+
/// Method to trigger the conversion
9+
pub fn adapt(snapshots: Vec<Snapshot>) -> SnapshotListMessage {
10+
snapshots
11+
.into_iter()
12+
.map(|snapshot| SnapshotListItemMessage {
13+
digest: snapshot.digest,
14+
beacon: snapshot.beacon,
15+
certificate_hash: snapshot.certificate_hash,
16+
size: snapshot.size,
17+
created_at: snapshot.created_at,
18+
locations: snapshot.locations,
19+
})
20+
.collect()
21+
}
22+
}
23+
24+
#[cfg(test)]
25+
mod tests {
26+
use mithril_common::test_utils::fake_data;
27+
28+
use super::*;
29+
30+
#[test]
31+
fn adapt_ok() {
32+
let mut snapshot = fake_data::snapshots(1)[0].to_owned();
33+
snapshot.digest = "digest123".to_string();
34+
let snapshot_list_message = ToSnapshotListMessageAdapter::adapt(vec![snapshot]);
35+
36+
assert_eq!("digest123".to_string(), snapshot_list_message[0].digest);
37+
}
38+
}

0 commit comments

Comments
 (0)