2021-02-12 14:42:51 +03:00
|
|
|
use crate::dto::Certificate;
|
2021-02-12 14:54:08 +03:00
|
|
|
use crate::results::{AddRootResult, AllCertsResult, InsertResult, WeightResult};
|
2021-02-12 14:42:51 +03:00
|
|
|
use crate::service_impl::{
|
2021-02-12 14:54:08 +03:00
|
|
|
add_root_impl, get_all_certs_impl, get_weight_impl, insert_cert_impl, insert_cert_impl_raw,
|
2021-02-12 14:42:51 +03:00
|
|
|
};
|
2021-08-01 16:31:13 +03:00
|
|
|
use marine_rs_sdk::{CallParameters, marine};
|
2021-02-12 14:34:23 +03:00
|
|
|
|
2021-08-01 16:31:13 +03:00
|
|
|
#[marine]
|
2021-02-12 14:27:22 +03:00
|
|
|
/// add a certificate in string representation to trust graph if it is valid
|
2021-02-12 14:34:23 +03:00
|
|
|
/// see `trust_graph::Certificate` class for string encoding/decoding
|
2021-02-12 14:27:22 +03:00
|
|
|
// TODO change `current_time` to time service
|
2021-02-12 14:34:23 +03:00
|
|
|
fn insert_cert_raw(certificate: String, current_time: u64) -> InsertResult {
|
|
|
|
insert_cert_impl_raw(certificate, current_time).into()
|
|
|
|
}
|
|
|
|
|
2021-08-01 16:31:13 +03:00
|
|
|
#[marine]
|
2021-02-12 14:34:23 +03:00
|
|
|
/// add a certificate in JSON representation to trust graph if it is valid
|
|
|
|
/// see `dto::Certificate` class for structure
|
|
|
|
fn insert_cert(certificate: Certificate, current_time: u64) -> InsertResult {
|
2021-02-12 14:27:22 +03:00
|
|
|
insert_cert_impl(certificate, current_time).into()
|
2021-01-27 12:57:19 +03:00
|
|
|
}
|
|
|
|
|
2021-08-01 16:31:13 +03:00
|
|
|
#[marine]
|
2021-02-10 15:23:51 +03:00
|
|
|
fn get_weight(public_key: String) -> WeightResult {
|
|
|
|
get_weight_impl(public_key).into()
|
|
|
|
}
|
|
|
|
|
2021-08-01 16:31:13 +03:00
|
|
|
#[marine]
|
2021-02-10 15:23:51 +03:00
|
|
|
fn get_all_certs(issued_for: String) -> AllCertsResult {
|
|
|
|
get_all_certs_impl(issued_for).into()
|
|
|
|
}
|
|
|
|
|
2021-08-01 16:31:13 +03:00
|
|
|
#[marine]
|
2021-02-12 14:54:08 +03:00
|
|
|
/// could add only a host of a trust graph service
|
|
|
|
fn add_root(pk: String, weight: u32) -> AddRootResult {
|
2021-08-01 16:31:13 +03:00
|
|
|
let call_parameters: CallParameters = marine_rs_sdk::get_call_parameters();
|
2021-02-12 14:54:08 +03:00
|
|
|
let init_peer_id = call_parameters.init_peer_id.clone();
|
|
|
|
if call_parameters.host_id == init_peer_id {
|
|
|
|
add_root_impl(pk, weight).into()
|
|
|
|
} else {
|
|
|
|
return AddRootResult {
|
|
|
|
ret_code: 1,
|
2021-02-12 14:54:38 +03:00
|
|
|
error: "Root could add only a host of trust graph service".to_string(),
|
2021-02-12 14:54:08 +03:00
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|