in utils/helper.go [67:111]
func GetScopeType(id string) types.ScopeType {
if len(id) == 0 || id == "/" {
return types.Tenant
}
idURL, err := url.ParseRequestURI(id)
if err != nil {
return types.Unknown
}
path := idURL.Path
path = strings.TrimPrefix(path, "/")
path = strings.TrimSuffix(path, "/")
components := strings.Split(path, "/")
componentsBeforeProvider := make([]string, 0)
for _, part := range components {
if strings.EqualFold(part, "providers") {
break
}
componentsBeforeProvider = append(componentsBeforeProvider, part)
}
if len(componentsBeforeProvider) == 0 {
mgmtPrefix := "providers/Microsoft.Management/managementGroups"
if len(path) >= len(mgmtPrefix) && strings.EqualFold(path[0:len(mgmtPrefix)], mgmtPrefix) {
return types.ManagementGroup
} else {
return types.Tenant
}
}
// #nosec G602
if len(componentsBeforeProvider) == 2 && strings.EqualFold(componentsBeforeProvider[0], "subscriptions") {
return types.Subscription
}
// #nosec G602
if len(componentsBeforeProvider) == 4 && strings.EqualFold(componentsBeforeProvider[0], "subscriptions") &&
// #nosec G602
strings.EqualFold(componentsBeforeProvider[2], "resourceGroups") {
return types.ResourceGroup
}
return types.Unknown
}