use std::rc::Rc;
use gain::identity;
use lep::{obj, Domain, Obj, Res};
use crate::future::future_obj;
pub fn register(d: &mut Domain) {
register_principal(d);
register_instance(d);
}
pub fn register_principal(d: &mut Domain) {
d.register("identity/principal", principal);
}
pub fn register_instance(d: &mut Domain) {
d.register("identity/instance", instance);
}
pub fn principal(args: &Obj) -> Res {
if args.is::<()>() {
return Ok(future_obj(async {
Ok(match identity::principal_id().await {
Some(id) => Rc::new(id),
None => obj::nil(),
})
}));
}
crate::wrong_number_of_arguments()
}
pub fn instance(args: &Obj) -> Res {
if args.is::<()>() {
return Ok(future_obj(async {
Ok(match identity::instance_id().await {
Some(id) => Rc::new(id),
None => obj::nil(),
})
}));
}
crate::wrong_number_of_arguments()
}