/// <summary> /// Creates a new <see cref="ResourceId"/> /// </summary> /// <param name="resourceId">The fully-qualified resource Id</param> /// <param name="output">The resource Id</param> public static bool TryParse(string resourceId, out ResourceId output) { ResourceGroupLevelResourceId groupLevelResourceId; if (ResourceGroupLevelResourceId.TryParse(resourceId, out groupLevelResourceId)) { output = groupLevelResourceId; return(true); } SubscriptionLevelResourceId subscriptionLevelResourceId; if (SubscriptionLevelResourceId.TryParse(resourceId, out subscriptionLevelResourceId)) { output = subscriptionLevelResourceId; return(true); } TenantLevelResourceId tenantLevelResourceId; if (TenantLevelResourceId.TryParse(resourceId, out tenantLevelResourceId)) { output = tenantLevelResourceId; return(true); } output = null; return(false); }
/// <summary> /// Creates a new <see cref="TenantLevelResourceId"/> /// </summary> /// <param name="resourceId">The resource Id string</param> public static TenantLevelResourceId Parse(string resourceId) { TenantLevelResourceId output; if (!TenantLevelResourceId.TryParse(resourceId, out output)) { throw new ArgumentException($"Unable to parse fully qualified resource id '{resourceId}'.", nameof(resourceId)); } return(output); }
/// <summary> /// Tries to create a new <see cref="TenantLevelResourceId"/> /// </summary> /// <param name="resourceId">The resource Id string</param> /// <param name="output">The resource Id output</param> public static bool TryParse(string resourceId, out TenantLevelResourceId output) { output = null; if (resourceId == null) { return(false); } var segments = resourceId.Trim('/').SplitRemoveEmpty('/'); if (segments.Length < 1) { return(false); } if (!"providers".EqualsInsensitively(segments[0])) { return(false); } ResourceIdScope routingScope; IEnumerable <ResourceIdScope> parentScopes; if (!ResourceId.TryParseResourceScopes( pathSegments: segments, startIndex: 0, routingScope: out routingScope, parentScopes: out parentScopes)) { return(false); } output = new TenantLevelResourceId( routingScope: routingScope, parentScopes: parentScopes); return(true); }
/// <summary> /// Initializes a new instance of the <see cref="TenantLevelResourceId"/> class /// </summary> /// <param name="routingScope">The routing scope</param> /// <param name="parentScopes">The parent scopes</param> private TenantLevelResourceId(ResourceIdScope routingScope, IEnumerable <ResourceIdScope> parentScopes) : base(routingScope, parentScopes, TenantLevelResourceId.FormatResourceId(routingScope, parentScopes)) { }