func GetScopeType()

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
}