Skip to content

Commit 3b64893

Browse files
committed
chore: improve API
1 parent b949077 commit 3b64893

File tree

3 files changed

+30
-13
lines changed

3 files changed

+30
-13
lines changed

src/idempotent-proxy-canister/idempotent-proxy-canister.did

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,9 @@ type InitArgs = record {
2828
proxy_token_refresh_interval : nat64;
2929
subnet_size : nat64;
3030
};
31-
type Result = variant { Ok; Err : text };
32-
type Result_1 = variant { Ok : StateInfo; Err };
31+
type Result = variant { Ok : bool; Err : text };
32+
type Result_1 = variant { Ok; Err : text };
33+
type Result_2 = variant { Ok : StateInfo; Err : text };
3334
type StateInfo = record {
3435
freezing_threshold : nat64;
3536
ecdsa_key_name : text;
@@ -53,18 +54,20 @@ type UpgradeArgs = record {
5354
subnet_size : opt nat64;
5455
};
5556
service : (opt ChainArgs) -> {
56-
admin_add_callers : (vec principal) -> (Result);
57-
admin_add_managers : (vec principal) -> (Result);
58-
admin_remove_callers : (vec principal) -> (Result);
59-
admin_remove_managers : (vec principal) -> (Result);
60-
admin_set_agents : (vec Agent) -> (Result);
61-
get_state : () -> (Result_1) query;
57+
admin_add_caller : (principal) -> (Result);
58+
admin_add_callers : (vec principal) -> (Result_1);
59+
admin_add_managers : (vec principal) -> (Result_1);
60+
admin_remove_callers : (vec principal) -> (Result_1);
61+
admin_remove_managers : (vec principal) -> (Result_1);
62+
admin_set_agents : (vec Agent) -> (Result_1);
63+
get_state : () -> (Result_2) query;
64+
is_caller : (principal) -> (Result) query;
6265
parallel_call_all_ok : (CanisterHttpRequestArgument) -> (HttpResponse);
6366
parallel_call_any_ok : (CanisterHttpRequestArgument) -> (HttpResponse);
6467
parallel_call_cost : (CanisterHttpRequestArgument) -> (nat) query;
6568
proxy_http_request : (CanisterHttpRequestArgument) -> (HttpResponse);
6669
proxy_http_request_cost : (CanisterHttpRequestArgument) -> (nat) query;
67-
validate_admin_add_managers : (vec principal) -> (Result);
68-
validate_admin_remove_managers : (vec principal) -> (Result);
69-
validate_admin_set_agents : (vec Agent) -> (Result);
70+
validate_admin_add_managers : (vec principal) -> (Result_1);
71+
validate_admin_remove_managers : (vec principal) -> (Result_1);
72+
validate_admin_set_agents : (vec Agent) -> (Result_1);
7073
}

src/idempotent-proxy-canister/src/api.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ pub struct StateInfo {
2222
}
2323

2424
#[ic_cdk::query]
25-
fn get_state() -> Result<StateInfo, ()> {
25+
fn get_state() -> Result<StateInfo, String> {
2626
let s = store::state::with(|s| StateInfo {
2727
ecdsa_key_name: s.ecdsa_key_name.clone(),
2828
proxy_token_public_key: s.proxy_token_public_key.clone(),
@@ -47,6 +47,11 @@ fn get_state() -> Result<StateInfo, ()> {
4747
Ok(s)
4848
}
4949

50+
#[ic_cdk::query]
51+
fn is_caller(id: Principal) -> Result<bool, String> {
52+
store::state::with(|s| Ok(s.allowed_callers.contains(&id)))
53+
}
54+
5055
#[ic_cdk::query]
5156
async fn proxy_http_request_cost(req: CanisterHttpRequestArgument) -> u128 {
5257
let calc = store::state::cycles_calculator();

src/idempotent-proxy-canister/src/api_admin.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use candid::Principal;
2-
use ic_cose_types::validate_principals;
2+
use ic_cose_types::{validate_principals, ANONYMOUS};
33
use std::collections::BTreeSet;
44

55
use crate::{agent, is_controller, is_controller_or_manager, store, tasks};
@@ -22,6 +22,15 @@ fn admin_remove_managers(args: BTreeSet<Principal>) -> Result<(), String> {
2222
})
2323
}
2424

25+
#[ic_cdk::update(guard = "is_controller_or_manager")]
26+
fn admin_add_caller(id: Principal) -> Result<bool, String> {
27+
if id == ANONYMOUS {
28+
Err("anonymous caller cannot be added".to_string())?;
29+
}
30+
31+
store::state::with_mut(|r| Ok(r.allowed_callers.insert(id)))
32+
}
33+
2534
#[ic_cdk::update(guard = "is_controller_or_manager")]
2635
fn admin_add_callers(mut args: BTreeSet<Principal>) -> Result<(), String> {
2736
validate_principals(&args)?;

0 commit comments

Comments
 (0)