1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
use graph_core::resource::ResourceIdentity;
use handlebars::*;
#[derive(Default)]
pub struct Registry;
impl Registry {
pub fn register_internal_helper(
resource_identity: ResourceIdentity,
registry: &mut Handlebars,
) {
match resource_identity {
ResourceIdentity::Drive
| ResourceIdentity::Drives
| ResourceIdentity::Me
| ResourceIdentity::Users
| ResourceIdentity::Sites
| ResourceIdentity::Groups => {
registry.register_helper(
"drive_item_id",
Box::new(
move |_: &Helper,
_: &Handlebars,
context: &Context,
_: &mut RenderContext,
out: &mut dyn Output|
-> HelperResult {
if let Some(data) = context.data().as_object() {
for (name, value) in data.iter() {
if name.eq("id") {
if let Some(id_str) = value.as_str() {
match resource_identity {
ResourceIdentity::Me
| ResourceIdentity::Users
| ResourceIdentity::Sites
| ResourceIdentity::Groups => {
out.write("drive/")?;
}
_ => {}
}
if id_str.starts_with(':') && id_str.ends_with(':') {
out.write("root")?;
} else {
out.write("items/")?;
}
out.write(id_str)?;
}
}
}
}
Ok(())
},
),
);
registry.register_helper(
"resource_drive_path",
Box::new(
move |_: &Helper,
_: &Handlebars,
_: &Context,
_: &mut RenderContext,
out: &mut dyn Output|
-> HelperResult {
match resource_identity {
ResourceIdentity::Me
| ResourceIdentity::Users
| ResourceIdentity::Sites
| ResourceIdentity::Groups => {
out.write("drive")?;
}
_ => {}
}
Ok(())
},
),
);
}
_ => {}
}
}
}