pub parent_id: String,
}
+impl AuthExtractor {
+ /// Returns a new [AuthExtractor].
+ fn new(auth: &str, method: AccessMethod, o2_type: O2Type, o2_id: &str, org_id: &str) -> Self {
+ AuthExtractor {
+ auth: auth.to_owned(),
+ method: format!("{method}"),
+ o2_type: format!("{o2_type}:{o2_id}"),
+ org_id: format!("{org_id}"),
+ bypass_check: false,
+ parent_id: format!("default"),
+ }
+ }
+
+ // /// Returns the [AuthExtractor] with `parent_id` set to the given value.
+ // fn parent(mut self, parent_id: &str) -> Self {
+ // self.parent_id = format!("{parent_id}");
+ // self
+ // }
+
+ /// Returns an [AuthExtractor] instance for the create_folder_v2 route.
+ fn create_folder_v2(p: &RouteParams, auth: &str) -> Option<Self> {
+ let org_id = Self::get_org_id(p)?;
+ let folder_type = Self::get_param(p, "folder_type")?;
+ let o2_type = O2Type::from_folder_type_param(&folder_type)?;
+ let e = AuthExtractor::new(auth, AccessMethod::Post, o2_type, &org_id, &org_id);
+ Some(e)
+ }
+
+ /// Returns an [AuthExtractor] instance for the get_folder_v2 route.
+ fn get_folder_v2(p: &RouteParams, auth: &str) -> Option<Self> {
+ let org_id = Self::get_org_id(p)?;
+ let folder_type = Self::get_param(p, "folder_type")?;
+ let o2_type = O2Type::from_folder_type_param(&folder_type)?;
+ let folder_id = Self::get_param(p, "folder_id")?;
+ let e = AuthExtractor::new(auth, AccessMethod::Get, o2_type, &folder_id, &org_id);
+ Some(e)
+ }
+
+ /// Returns an [AuthExtractor] instance for the get_folder_by_name_v2 route.
+ fn get_folder_by_name_v2(p: &RouteParams, auth: &str) -> Option<Self> {
+ let org_id = Self::get_org_id(p)?;
+ let folder_type = Self::get_param(p, "folder_type")?;
+ let o2_type = O2Type::from_folder_type_param(&folder_type)?;
+ let o2_id = format!("_all_{org_id}");
+ let e = AuthExtractor::new(auth, AccessMethod::Get, o2_type, &o2_id, &org_id);
+ Some(e)
+ }
+
+ /// Returns an [AuthExtractor] instance for the update_folder_v2 route.
+ fn update_folder_v2(p: &RouteParams, auth: &str) -> Option<Self> {
+ let org_id = Self::get_org_id(p)?;
+ let folder_type = Self::get_param(p, "folder_type")?;
+ let o2_type = O2Type::from_folder_type_param(&folder_type)?;
+ let folder_id = Self::get_param(p, "folder_id")?;
+ let e = AuthExtractor::new(auth, AccessMethod::Put, o2_type, &folder_id, &org_id);
+ Some(e)
+ }
+
+ /// Returns an [AuthExtractor] instance for the delete_folder_v2 route.
+ fn delete_folder_v2(p: &RouteParams, auth: &str) -> Option<Self> {
+ let org_id = Self::get_org_id(p)?;
+ let folder_type = Self::get_param(p, "folder_type")?;
+ let o2_type = O2Type::from_folder_type_param(&folder_type)?;
+ let folder_id = Self::get_param(p, "folder_id")?;
+ let e = AuthExtractor::new(auth, AccessMethod::Delete, o2_type, &folder_id, &org_id);
+ Some(e)
+ }
+
+ /// Returns an [AuthExtractor] instance for the list_folders_v2 route.
+ fn list_folders_v2(p: &RouteParams, auth: &str) -> Option<Self> {
+ let org_id = Self::get_org_id(p)?;
+ let folder_type = Self::get_param(p, "folder_type")?;
+ let o2_type = O2Type::from_folder_type_param(&folder_type)?;
+ let e = AuthExtractor::new(auth, AccessMethod::List, o2_type, &org_id, &org_id);
+ Some(e)
+ }
+
+ /// Returns an [AuthExtractor] instance for the create_alert_v2 route.
+ fn create_alert_v2(p: &RouteParams, auth: &str) -> Option<Self> {
+ let org_id = Self::get_org_id(p)?;
+ let e = AuthExtractor::new(auth, AccessMethod::Post, O2Type::Alert, &org_id, &org_id);
+ // todo: set parent
+ Some(e)
+ }